如何获得所需的输出?
输入字符串:
" software Company(1920 of 1897 ) IBM region(sb2). region(sb3)
要搜索的字词 -
"software company(1920)"
输出
software Company(1920) IBM.IBM region(sb2)。地区(第3页)
简而言之,我必须找到一个短语并用开头和结尾的星号(*)替换相同的短语,忽略案例和匹配精确的世界
答案 0 :(得分: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);
答案 1 :(得分: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*"));
答案 2 :(得分:0)
我只有几年的java经验,所以有人请纠正我,如果我错了,但你不能使用它:假设你的输入字符串是String input
然后使用{{ 1}}。获得索引后,您可以简单地使用input.indexOf([words to be searched])
方法,将总文本剪切成一堆小块,添加星号,然后将所有内容连接在一起。
答案 3 :(得分:0)
使用正则表达式
for .net
http://msdn.microsoft.com/en-us/library/az24scfc.aspx
http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.aspx
for java
http://www.vogella.com/articles/JavaRegularExpressions/article.html
答案 4 :(得分: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)
返回整个匹配的模式。