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]+)