是否可以将这5个正则表达式组合成一个(或至少其中一些)?
/[ ,][ABCabc][:]\d+/g
/[ ,][ABCabc][ ]?[=][ ]?\d+/g
/^[ABCabc][:]\d+/g
/^[ABCabc][ ]?[=][ ]?\d+/g
/[\\][\w][ABCabc][ ]?[=][ ]?\d+/g
提示,更正和改进也会很棒。
答案 0 :(得分:7)
首先,减少它们:
/[ ,][a-c]:\d+/gi
/[ ,][a-c] ?= ?\d+/gi
/^[a-c]:\d+/gi
/^[a-c] ?= ?\d+/gi
/\\\w[a-c] ?= ?\d+/gi
现在,通过组合它们,你的意思是说你正在测试一场比赛,而不是全部,对吧?所以第2步:
/[ ,][a-c](:| ?= ?)\d+/gi
强> /^[a-c]:\d+/gi
/^[a-c] ?= ?\d+/gi
/\\\w[a-c] ?= ?\d+/gi
第3步:
/[ ,][a-c](:| ?= ?)\d+/gi
/^[a-c](:| ?= ?)\d+/gi
强> /\\\w[a-c] ?= ?\d+/gi
第4步:
/(^| |,)[a-c](:| ?= ?)\d+/gi
强> /\\\w[a-c] ?= ?\d+/gi
第5步:
/((^| |,)[a-c](:| ?= ?)|\\\w[a-c] ?= ?)\d+/gi
强> 瞧。你可以使用第5步的捕获,但我不会让事情复杂化。
如果可以,请坚持使用步骤4中的结果。步骤5使正则表达式变得冗长而令人困惑。
答案 1 :(得分:2)
您可能需要查看Regexp::Assemble
答案 2 :(得分:0)
你总是可以将正则表达式合并为一个,只需通过(regex1)|(regex2)|(regex3)...(如果你的意思是“合并为一个”)
问题是你是否应该,当然?正常情况下,正则表达式很难阅读,并且可以鼓励您在将来更容易理解和修改它们。
答案 3 :(得分:0)
如果通过组合你意味着正则表达式测试,那么如果任何模式匹配你得到一个匹配,是的:
(?:
(?:/[ ,][ABCabc][:]\d+)|
(?:/[ ,][ABCabc][ ]?[=][ ]?\d+)|
(?:/^[ABCabc][:]\d+)|
(?:/^[ABCabc][ ]?[=][ ]?\d+)|
(?:/[\\][\w][ABCabc][ ]?[=][ ]?\d+)
)/g