Java 方法匹配不起作用
我不明白为什么这个正则表达式返回falseJava 方法匹配不起作用,java,regex,Java,Regex,我不明白为什么这个正则表达式返回false Pattern.matches("\\bi", "an is"); 我的角色在一个词的边界上 如果使用匹配项,则整个字符串必须匹配: Pattern.matches(".*\\bi.*", "an is") 这允许前后有0个或更多字符。或: boolean anywhere = Pattern.compile("\\bi").matcher("an is").find(); 将告诉您是否有子字符串匹配(在本例中为true)。需要注意的是,编译正则
Pattern.matches("\\bi", "an is");
我的角色在一个词的边界上 如果使用匹配项,则整个字符串必须匹配:
Pattern.matches(".*\\bi.*", "an is")
这允许前后有0个或更多字符。或:
boolean anywhere = Pattern.compile("\\bi").matcher("an is").find();
将告诉您是否有子字符串匹配(在本例中为true)。需要注意的是,编译正则表达式然后保留它们可以提高性能。在Java中,
匹配
尝试将模式与整个字符串匹配
这是真实的,和
如果要检查字符串中是否有匹配项,可以使用*\bi.*
。在本例中,作为Java字符串文本,它是“*\\bi.*”
java.util.regex.Matcher
API链接
- :尝试根据图案匹配整个区域李>
*
是什么意思
这里使用的点
是一个regex元字符,表示(几乎)任何字符*
是一个正则表达式元字符,表示“零次或多次重复”。例如,类似于A.*B
的内容匹配A
,后跟零个或多个“any”字符,后跟B
()
工具书类
- 及
和*
(以及其他元字符)可能会失去其特殊意义,具体取决于它们出现的位置[.*]
是一个字符类,它匹配文字句点
或文字星号*
。前面加反斜杠也会转义元字符,因此a\.b
匹配“a.b”
- 及
相关问题 Java没有基于正则表达式的,和。您仍然可以使用
匹配
完成以下相同的操作:
-它是否在任何地方包含该模式的匹配项匹配(“.*pattern.*”)
-它是否以模式匹配开始匹配(“pattern.*)
-是否以模式匹配结束匹配(“.*pattern”)
String
API快速备忘单
下面是一个快速备忘单,列出了哪些方法是基于正则表达式的,哪些不是:
- 非正则表达式方法:
- 正则表达式方法:
matches("Sergio Oliveira Jr.", "/oliveira/i" ) => true
方法match返回一个数组,其中包含匹配的组。因此,它不仅告诉您是否有匹配项,而且还返回匹配的组,以防您有匹配项
match("aa11bb22", "/(\\d+)/g" ) => ["11", "22"]
方法sub允许您使用regex执行替换
sub("aa11bb22", "s/\\d+/00/g" ) => "aa00bb00"
支持全局和不区分大小写的正则表达式
match("aa11bb22", "/(\\d+)/" ) => ["11"]
match("aa11bb22", "/(\\d+)/g" ) => ["11", "22"]
matches("Sergio Oliveira Jr.", "/oliveira/" ) => false
matches("Sergio Oliveira Jr.", "/oliveira/i" ) => true
允许您更改转义字符,以防您不喜欢看到这么多“\”
match("aa11bb22", "/(\\d+)/g" ) => ["11", "22"]
match("aa11bb22", "/(#d+)/g", '#' ) => ["11", "22"]
在哪里可以找到。*???的语法???谢谢你提到了几乎所有的字符串或正则表达式方法,除了。:)@马修:是的,我只特别列出了
java.lang.String
中的那些。我的意思是,如果我真的想涵盖所有内容(例如编译),我可以写一篇文章。不过,我不确定我是否真的应该这样做。最好将contains(CharSequence s)
与包含符号的字符串一起使用,例如%
。我遇到了这个问题,matches(.*pattern.*)
在将aaa(%)
与完全相同的字符串进行比较时返回false,尽管等于(字符串s)
和包含(字符序列s)
返回true;我将在某个时候将编译模式合并到我的答案中。