我编写了一个正则表达式来测试字符串是否是逻辑表达式。这是正则表达式:
05_webpack_run_build_prod:
command: "cd /tmp/deployment/application && sudo webpack --config webpack.prod.config.js --progress --colors"
这是我用上面的表达式测试的主题:
/(.*)(<|>|<=|>=|=|!=)(.*)/
PHP中的3!=2
函数返回以下数组:
preg_match_all
我的逻辑运算符错误,因为它不仅与[
[
"3!=2"
],
[
null
],
[
"="
],
[
"2"
]
]
模式匹配,而且与=
运算符匹配。我应该如何重写正则表达式以匹配括号中的多个字符串?
答案 0 :(得分:1)
您应该在运营商之前排除<>!
,在运营商之后排除=
。然后,只是缩短,将操作员分组更紧。
([^<>!]*)([<>]=?|!?=)([^=]*)
你也可以用它来缩短它:
(\w+)([<>]=?|!?=)(\w+)
使用<=>
,使用
([^<>!]*)(<=>|[<>]=?|!?=)([^=>]*)
或者,在某些情况下更好,
(\w+)(<=>|[<>]=?|!?=)(\w+)
答案 1 :(得分:1)
.*
正在吃!
。使.*
特定于您不希望它匹配的运算符。我想:
([^!<>=]+)(<|>|<=|>=|!=|=)(.*)
应该这样做。
演示:https://regex101.com/r/yM5aY8/1
或者如果您只使用数字,请使用\d+
。
答案 2 :(得分:1)
而不仅仅是。*在开头和结尾尝试&#39; \ w。*&#39;如果表达式两边都有数字/变量名
(\w.*)(<|>|<=|>=|=|!=)(\w.*)