Regex 正则表达式或子句与我希望的不匹配
正则表达式:Regex 正则表达式或子句与我希望的不匹配,regex,Regex,正则表达式: jfr [ a-z ]+-((,?)|([ a-z ]+)) 不匹配我的字符串jfr abra-kadabra,尽管它匹配jfr abra-,(它应该匹配)。为什么?您不能通过使用,?将设为可选,否则分组表达式也将匹配(并捕获)空字符串: jfr [ a-z]+-(,|[ a-z]+) 字符类中还有两个空格,这是不必要的 但是,建议在正则表达式中使用单词边界,以避免匹配不需要的额外字符: \bjfr [ a-z]+-(?:,|[ a-z]+\b) |表示交替匹配,因此您的(
jfr [ a-z ]+-((,?)|([ a-z ]+))
不匹配我的字符串
jfr abra-kadabra
,尽管它匹配jfr abra-,
(它应该匹配)。为什么?您不能通过使用,?
将设为可选,否则分组表达式也将匹配(并捕获)空字符串:
jfr [ a-z]+-(,|[ a-z]+)
字符类中还有两个空格,这是不必要的
但是,建议在正则表达式中使用单词边界,以避免匹配不需要的额外字符:
\bjfr [ a-z]+-(?:,|[ a-z]+\b)
|
表示交替匹配,因此您的(,?)
匹配(也为空值)不会检查([a-z]+)