Java正则表达式模式
所以我遇到了一段正则表达式模式代码:Java正则表达式模式,java,regex,Java,Regex,所以我遇到了一段正则表达式模式代码: .*?(callback|cron)$ 我认为*?表示任何字符出现零次或多次,但不确定其余字符:3 (callback|cron)$ $表示匹配行尾 因此,这意味着如果字符串中有一个以callback或cron结尾的单词,那么它就是真的 示例: String s = "lawlasd callback"; System.out.println(s.matches(".*?(callback|cron)$")); true 结果:
.*?(callback|cron)$
我认为*?
表示任何字符出现零次或多次,但不确定其余字符:3
(callback|cron)$
$
表示匹配行尾
因此,这意味着如果字符串中有一个以callback
或cron
结尾的单词,那么它就是真的
示例:
String s = "lawlasd callback";
System.out.println(s.matches(".*?(callback|cron)$"));
true
结果:
String s = "lawlasd callback";
System.out.println(s.matches(".*?(callback|cron)$"));
true
现在,如果字符串仅为
lawlasd
,它将返回false
,因为它不会以单词callback
或cron
结尾,以继续@Rod\u Algonquin的回答:您可以在这里看到一个示例,它将更详细地解释每个组件
*?匹配任何字符(换行符除外)量词:介于零之间
无限次,尽可能少的次数,根据需要扩展
[懒惰的]
第一个捕获组(回调| cron)
第一种选择:回调
callback与字符callback字面匹配(区分大小写)
第二种选择:cron
cron按字面意思匹配字符cron(区分大小写)
$assert字符串末尾的位置
它将匹配一行,其中callback或cron是该行的最后一个字符串。只要它位于字符串的末尾,它也将与“dodecahemidodecacron”匹配 。请查看此用法
\b
,以查找缺少的单词匹配。它应该是\b(回调| cron)$