在Java语言中,当执行replaceAll来查找正则表达式模式时,如下所示:
replaceAll("\\?i\\b(\\w+)\\b(\\s+\\1)+\\b", "$1");
(为了删除重复的连续大小写不敏感的单词,例如测试测试),我不确定我把?i
放在哪里了。我读到它应该在开头,但如果我把它拿出来,我就会捕捉到重复的连续单词(例如test test),但不是大小写不敏感的单词(例如Test test)。所以我想我可以在一开始添加?i,但这似乎没有完成工作。有什么想法吗?谢谢!
发布于 2010-08-09 05:25:39
RegexBuddy告诉我,如果你想在开头包含它,这是正确的语法:
"(?i)\\b(\\w+)\\b(\\s+\\1)+\\b"
发布于 2014-10-03 05:30:55
您还可以匹配不区分大小写的正则表达式,并使用Pattern.CASE_INSENSITIVE常量使其更具可读性,如下所示:
Pattern mypattern = Pattern.compile(MYREGEX, Pattern.CASE_INSENSITIVE);
Matcher mymatcher= mypattern.matcher(mystring);
发布于 2010-08-09 05:24:18
如果您的整个表达式不区分大小写,则只需指定CASE_INSENSITIVE
标志:
Pattern.compile(regexp, Pattern.CASE_INSENSITIVE)
https://stackoverflow.com/questions/3436118
复制相似问题