我真的一直在努力尝试在单个正则表达式行中匹配一组相对简单的可能的字顺序。匹配不同的字顺序正则表达式
基本上,我想匹配这些(以及其他语法类似)的可能性:
“设置的VAR”
“设置了var关”
“设定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),但短语二wi我们总是会与“出发”的思想相匹配,认为“集”是名字。我也试过:
/((?!set)) (((on |off)([a-z]{1,})? ([a-z]{2,})))|(([a-z]{2,}) (on|off))/i
没有成功。
编辑1:另外,我忘了提及的是,这些短语可以在任何地方的文件中找到;他们不是独立的线路。
如: “这是设置了var上的方式” 是有可能的 “设置了var上”
问题:
什么是我可以一起做到这一点的最佳方式,而无需 单独匹配?
有没有办法强制正则表达式OR语句的匹配顺序?
您是否考虑限制用户输入?这种方式更容易。 '引发var'听起来像'var'是某种警报。 – JDB
'/(?<= SET)(on | off)? (下)? ([a-z] +)((1)|(on | off))/' – FrankieTheKneeMan