Java 教程中有正则表达式量词的示例和说明。
Greedy - 吃掉整个字符串然后后退一个字符再试一次
Regex: .*foo // greedy String to search: xfooxxxxxxfoo Found "xfooxxxxxxfoo"
勉强 - 从头开始然后一次吃一个字符
Regex: .*?foo // reluctant quantifier String to search: xfooxxxxxxfoo Found "xfoo", "xxxxxxfoo"
占有式 - 吃掉整个字符串尝试一次匹配
Regex: .*+foo // possessive quantifier String to search: xfooxxxxxxfoo No match found
它们没问题,我理解它们,但是有人可以向我解释一下将正则表达式更改为字符类时会发生什么吗?还有其他规定吗?
Regex: [fx]* String to search: xfooxxxxxxfoo Found "xf","","","xxxxxxf","","","","" Regex: [fx]*? String to search: xfooxxxxxxfoo Found 15 zero-length matches Regex: [fx]*+ String to search: xfooxxxxxxfoo Found "xf","","","xxxxxxf","","","",""
最佳答案
它将量词(贪婪、不情愿/懒惰、占有欲)应用于整个字符类。 这意味着它将匹配(贪婪地、惰性地等)字符类中的每个文字字符。
Regex: [fx]*
String to search: xfooxxxxxxfoo
Found "xf","","","xxxxxxf","","","",""
因此它寻找零个或多个 f
或 x
。引擎找到匹配的 xf
。它还匹配两个 o
周围的空字符串。然后它匹配连续的 x
,因为它是 f
或 x
的零个或多个。
我会查看 regex101.com有关正则表达式的更多详细信息,尤其是左侧栏中的调试器部分
关于java - 正则表达式量词和字符类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25190914/