我需要匹配類似下面的字符串:正則表達式比較表達式
(anything >= anything)
而且只能由這些比較運算符:> = < = == = <>他們可以在那裏只有一次! 我所擁有的是:
^\(.+(>=|<=|>|<|==|!=).+\)$
但是它匹配的東西一樣> = =等等! 我沒有看通過stackoverflow的問題和谷歌搜索,但無法找到正確的解決方案。
請你幫我一下嗎?
我需要匹配類似下面的字符串:正則表達式比較表達式
(anything >= anything)
而且只能由這些比較運算符:> = < = == = <>他們可以在那裏只有一次! 我所擁有的是:
^\(.+(>=|<=|>|<|==|!=).+\)$
但是它匹配的東西一樣> = =等等! 我沒有看通過stackoverflow的問題和谷歌搜索,但無法找到正確的解決方案。
請你幫我一下嗎?
像^\(\s*[a-zA-Z0-9_+\-\/* ]+\s*(>=|<=|>|<|==|!=)\s*[a-zA-Z0-9_+\-\/* ]+\s*\)$
這樣的正則表達式應該可以做到這一點,對吧?
您可以使用以下方法:
^\(((?!(>=|<=|>|<|==|!=)).)+\s+(>=|<=|>|<|==|!=)\s+((?!(>=|<=|>|<|==|!=)).)+\)$
說明:
((?!(>=|<=|>|<|==|!=)).)+
任何其他比(>=|<=|>|<|==|!=)
\s+(>=|<=|>|<|==|!=)\s+
運營商遵循的一個字符由((?!(>=|<=|>|<|==|!=)).)+
比(>=|<=|>|<|==|!=)
其他任何字符如果您也打算也捕獲串像(myName == "Денис")
,你需要使用正則表達式如下:
^\((?>(?![<>=]=|!=|[<>]).)*?(?:[<>=]=|!=|[<>])(?>(?![<>=]=|!=|[<>]).)*?\)$
見demo on Regexstorm(支持.NET正則表達式的味道,不像
由於使用atomic grouping((?> ...)
),它比Karthik Manchala的建議快得多,因爲根據http://regexhero.net的測試結果),character classes([<>=]
)和延遲匹配(*?
)。此外,如果==
運算符前後缺少空格,則我的正則表達式仍將捕獲該表達式。
使用(?m)^\((?>(?![<>=]=|!=|[<>]).)*?(?:[<>=]=|!=|[<>])(?>(?![<>=]=|!=|[<>]).)*?\)$
我的正則表達式每秒產生15,783次迭代,Karthik的 (?m)^\(((?!(>=|<=|>|<|==|!=)).)+\s+(>=|<=|>|<|==|!=)\s+((?!(>=|<=|>|<|==|!=)).)+\)$
產生每秒9,204次迭代速度。
我很害怕,不會......通過「任何東西」我的意思是它也可以如下所示:(a + b> = a - g [i,j + d]) –
啊,我明白了。我相應地編輯了我的帖子。 – GrandonBroseph
太神奇了,謝謝! –