0

如何获得所需的输出?

输入字符串:

 " software Company(1920 of 1897 ) IBM region(sb2). region(sb3)

要搜索的词 -

"software company(1920)"

输出

软件公司 (1920) IBM.IBM 地区 (sb2)。地区(sb3)

简而言之,我必须找到一个短语并将相同的短语替换为起始和结束星号 (*)、忽略大小写和匹配精确世界

4

5 回答 5

1

试试这个BackReference

     String inputString = " software Company(1920) IBM. software company (1920)"+
           "TCS. SOftware Company (1920) HSBC. SOFTWARE COMPANY (1920) INFOSYS ";
     String patternStr = "([[a-zA-Z]{2}ftware Company\\([0-9]{4}\\)]{24})";
     Pattern pattern = Pattern.compile(patternStr );
     Matcher matcher = pattern.matcher(inputString);
     System.out.println(matcher.replaceAll("*$1*"));
于 2012-10-18T05:35:02.113 回答
1

你可以这样做:

    String str = "software Company (1920) IBM. software company (1920) TCS. SOftware Company (1920) HSBC. SOFTWARE COMPANY (1920) INFOSYS";

    Pattern p = Pattern.compile("(?i)(software company \\(1920\\))");
    Matcher matcher = p.matcher(str);
    while(matcher.find()) {
        String curStr = matcher.group();
        str = str.replace(curStr,"*"+curStr+"*");
    }
    System.out.println(str);
于 2012-10-18T05:17:53.260 回答
0

CASE_INSENSITIVE在编译模式时使用该功能

String input = "Software company (1988)";
    Pattern pattern = Pattern.compile("software company \\([1-9][0-9]{3}\\)",Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(input);
    if (matcher.matches())
    {
            System.out.println("*" + matcher.group(0) + "*");
    }

group(0)返回整个匹配的模式。

于 2012-10-18T04:59:37.323 回答
0

我只有几年的 java 经验,所以如果我错了,请有人纠正我,但你不能使用这个:假设你的输入字符串是String input然后使用input.indexOf([words to be searched]). 一旦有了索引,您就可以简单地使用该subString()方法,将整个文本切成一堆小块,添加星号,然后将所有内容重新连接在一起。

于 2012-10-18T04:39:24.563 回答