如何获得所需的输出?
输入字符串:
" software Company(1920 of 1897 ) IBM region(sb2). region(sb3)
要搜索的词 -
"software company(1920)"
输出
软件公司 (1920) IBM.IBM 地区 (sb2)。地区(sb3)
简而言之,我必须找到一个短语并将相同的短语替换为起始和结束星号 (*)、忽略大小写和匹配精确世界
如何获得所需的输出?
输入字符串:
" software Company(1920 of 1897 ) IBM region(sb2). region(sb3)
要搜索的词 -
"software company(1920)"
输出
软件公司 (1920) IBM.IBM 地区 (sb2)。地区(sb3)
简而言之,我必须找到一个短语并将相同的短语替换为起始和结束星号 (*)、忽略大小写和匹配精确世界
试试这个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*"));
你可以这样做:
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);
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)
返回整个匹配的模式。
我只有几年的 java 经验,所以如果我错了,请有人纠正我,但你不能使用这个:假设你的输入字符串是String input
然后使用input.indexOf([words to be searched])
. 一旦有了索引,您就可以简单地使用该subString()
方法,将整个文本切成一堆小块,添加星号,然后将所有内容重新连接在一起。
使用正则表达式
对于.net
http://msdn.microsoft.com/en-us/library/az24scfc.aspx
http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.aspx
对于java
http://www.vogella.com/articles/JavaRegularExpressions/article.html