Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 特定单词的正则表达式_Java_Regex - Fatal编程技术网

Java 特定单词的正则表达式

Java 特定单词的正则表达式,java,regex,Java,Regex,我试图为“[开始词][特定词][结束词]”编写一个正则表达式,并使其不区分大小写。但出于某种原因,它似乎不起作用 我是用java做的,因此有额外的“\” 例如,如果我想匹配单词“疯狂”,我的正则表达式是: /\\bcrazy\\b/i 在我的java代码中,当正则表达式与任何内容都不匹配时,我调用正则表达式: textToMakeHarder = textToMakeHarder.replaceAll("/\\bcrazy\\b/i", "super crazy"); 试试这个: Str

我试图为“[开始词][特定词][结束词]”编写一个正则表达式,并使其不区分大小写。但出于某种原因,它似乎不起作用

我是用java做的,因此有额外的“\”

例如,如果我想匹配单词“疯狂”,我的正则表达式是:

/\\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