我一直在努力尝试在单个正则表达式行中匹配一组相对简单的可能单词顺序。
基本上,我想匹配这些(以及其他语法相似的)可能性:
“设置变量”
“关闭 var”
“设置变量”
“设置 var 关闭”
“引爆 var”
“设置在 var 上”
“在 var 上设置”
“启动 var”
我需要的唯一组是“ var ”(可以是任何单个单词)和始终打开或关闭的值。这是基本的想法。
考虑到这一点,有两种可能的语法结构:
(on/off) (perhaps a word) (a word)
(a word) (on/off)
我已经能够使用以下正则表达式独立匹配这些可能性:
/((on |off )([a-z]{1,})? ([a-z]{2,}))/i
/([a-z]{2,}) (on|off)/i
所以,我想我可以这样做:
/(((on |off )([a-z]{1,})? ([a-z]{2,})))|(([a-z]{2,}) (on|off))/i
这只是(短语 1)|(短语 2),但短语 2 将始终与“set off”匹配,认为“set”是名称。我也试过:
/((?!set)) (((on |off )([a-z]{1,})? ([a-z]{2,})))|(([a-z]{2,}) (on|off))/i
没有成功。
编辑1:另外,我没有提到这些短语可以在文件的任何地方找到;他们不在独立的路线上。
例如:“ this is the way to set the var on ”与“ set the var on ”一样
问题:
我可以一起做这件事而不必单独匹配的最好方法是什么?
有没有办法强制正则表达式 OR 语句匹配顺序?