Java 特定单词的正则表达式
我试图为“[开始词][特定词][结束词]”编写一个正则表达式,并使其不区分大小写。但出于某种原因,它似乎不起作用 我是用java做的,因此有额外的“\” 例如,如果我想匹配单词“疯狂”,我的正则表达式是:Java 特定单词的正则表达式,java,regex,Java,Regex,我试图为“[开始词][特定词][结束词]”编写一个正则表达式,并使其不区分大小写。但出于某种原因,它似乎不起作用 我是用java做的,因此有额外的“\” 例如,如果我想匹配单词“疯狂”,我的正则表达式是: /\\bcrazy\\b/i 在我的java代码中,当正则表达式与任何内容都不匹配时,我调用正则表达式: textToMakeHarder = textToMakeHarder.replaceAll("/\\bcrazy\\b/i", "super crazy"); 试试这个: Str
/\\bcrazy\\b/i
在我的java代码中,当正则表达式与任何内容都不匹配时,我调用正则表达式:
textToMakeHarder = textToMakeHarder.replaceAll("/\\bcrazy\\b/i", "super crazy");
试试这个:
String textToMakeHarder = "I am a crazy person and he is also a crazy person. Are you crazycrazy too?";
Pattern re = Pattern.compile("\\bcrazy\\b",Pattern.CASE_INSENSITIVE);
Matcher m = re.matcher(textToMakeHarder);
textToMakeHarder = m.replaceAll("super crazy");
结果:
我是一个超级疯子,他也是一个超级疯子。你是吗
也疯狂吗
摆脱
/
和/i
,并使用模式来获得大小写不敏感:
Pattern pattern = Pattern.compile("\\bcrazy\\b",Pattern.CASE_INSENSITIVE);
Matcher match = pattern.matcher(textToMakeHarder);
textToMakeHarder = match.replaceAll("super crazy");
您希望尝试以下更简单的版本:
String textToMakeHarder = "foo bar is CraZY tonight".replaceAll("(?i)\\bcrazy\\b", "super crazy");
输出为:
foo bar is super crazy tonight
使用短修饰符(?i)进行不区分大小写的搜索
对于模式的正式Java 7文档不确定,但可能行尾
与字尾
不匹配。你试过“超级疯狂的我”吗?给我们一些你想运行这个的示例文本。如果text tomakehard=“Dragons dance crazy.”它应该用“超级疯狂”来代替“疯狂”。我试过在dance和crazy上用一些不同的东西来代替它,但它根本不能代替它们。replaceAll接受(Regex pattern匹配,String替换模式匹配)我确实需要它来检查它是否有单词的开头和结尾。例如,在句子“you sure you care?”中,我不想将“care”中的“Are”部分替换为同义词“Are”。当我将“crazy”作为一种模式时,是否仍可以在其周围添加/bcrazy\\b/I的正则表达式值,以确保它不是另一个单词的一部分,并且不区分大小写?这也将匹配acrazya
,这是不应该的matched@CorayThanAnkur抱歉,亲爱的,我刚刚错过了\\b,我现在正在编辑它。请记住,您需要向前看(?=\\b+
)和向后看(?啊哈,这可能是我需要的!让我试试看它是否有效。是的。有趣的是/I的东西不起作用。不过我完全可以用它。谢谢!
foo bar is super crazy tonight