使用正则表达式在搜索功能中出现问

时间:2014-12-03 06:52:10

标签: java regex

我尝试使用正则表达式在句子中加粗搜索词。

String sentence = “help me subString in regexhelp. “
String  searchWord=”help”;

sentence.replaceAll("(^|\\s)(" + "(?i)" + searchWord + ")(\\s|$)", "$1<b>$2</b>$3");

输出:帮助 regexhelp中的subString。

预期输出:帮助我在正则表达式中的subString 帮助

我想加粗所有匹配的字符串天气是字符串还是子字符串。

2 个答案:

答案 0 :(得分:1)

对于这种情况,您需要从正则表达式中删除前面的(^|\\s)(")(\\s|$)"模式,因为当前的正则表达式将匹配字符串help,前提是它的前面是开头的线锚或空格,然后是线锚或空格的结尾。为了匹配子字符串help,您需要从正则表达式中删除这些模式。

String sentence = "help me subString in regexhelp. ";
String  searchWord = "help";
System.out.println(sentence.replaceAll("(?i)(" + searchWord + ")", "<b>$1</b>"));

输出:

<b>help</b> me subString in regex<b>help</b>. 

答案 1 :(得分:0)

(help)

或在你的情况下

"("+"(?i)"+searchWord+")"

只需尝试此操作并替换为<b>$1</b>。请参阅演示。

http://regex101.com/r/yR3mM3/25