2014-01-23 123 views
0

我對regex比較新。我發現這個regex被使用,並且無法理解它的工作原理。正則表達式澄清

([\(]*([\w][\/]?[\w]?(%)?(,)?)*|[\/.]|[\w]([\-\*|\+|\\|\<\>|\=]([\(]*[\w][\/]?(%)?[\)]?[\)]?(,)?)+)*[\)]?)*$/

我最瞭解的基本語法,但無法理解這是什麼意思。

任何清晰的這一點將不勝感激!這是在JavaScript中使用的標籤。

謝謝!

+4

這可能幫助:https://www.debuggex.com/r/MyliJBLGcB1qhHQz,或本http://regex101.com/r/vO3aI9。如果我可以這樣說,那麼寫這種模式的人並不知道他們在做什麼。 – Kobi

+0

大聲笑這是我的時間之前,但這似乎符合要求。我需要對此進行增強,但我不明白這是什麼。感謝鏈接,通過這些可能會幫助我理解它。 – Aashray

回答

2

同樣沒有uneeded字符:

/(\(*(\w\/?\w?(%)?(,)?)*|[\/.]|\w([-*+\\<>=](\(*\w\/?(%)?\)?\)?(,)?)+)*\)?)*$/ 

這種模式可以匹配這樣的字符串(或沒有)的:

(((a/b%,(((a/b%,///./././(((a/b%,k*((((((((P/%)),) 
+0

我想知道爲什麼那些字符不需要。謝謝。 – Aashray

+0

@Aashray:看看這個鏈接:http://www.regular-expressions.info/charclass.html –

+0

@Aashray原始表達式在單個字母周圍有'[]'。這是多餘的。 – Navin

0

要了解更多關於正則表達式REFER:regex101給你的代碼,而閱讀解釋。

你的正則表達式:([\(]*([\w][\/]?[\w]?(%)?(,)?)*|[\/.]|[\w]([\-\*|\+|\\|\<\>|\=]([\(]*[\w][\/]?(%)?[\)]?[\)]?(,)?)+)*[\)]?)*$

將匹配任何類似

(d/f%, 
something 
122 

但將無法匹配像

--{} 

說明:

enter image description here

2

您正則表達式:

([\(]*([\w][\/]?[\w]?(%)?(,)?)*|[\/.]|[\w]([\-\*|\+|\\|\<\>|\=]([\(]*[\w][\/]?(%)?[\)]?[\)]?(,)?)+)*[\)]?)*$/ 

可以看作:

Regular expression visualization

Debuggex Demo

除非有您正則表達式一個錯字,它永遠不會匹配任何東西;正則表達式以$/結尾,這意味着字符串末尾後跟/,除非您匹配多行。如果這是家庭作業,我會說老師正在做一個壞笑話,因爲$/通常不匹配任何東西。

一些簡化後,您將獲得:

(\(*(\w\/?\w?(%)?(,)?)*|[\/.]|\w([-*|+\\<>=](\(*\w\/?(%)?\)?\)?(,)?)+)*\)?)*$/ 

Regular expression visualization

如果你不關心分組,那麼這是類似的:

(\(|[\/.]|(\w\/?\w?%?,?)|\w([-*|+\\<>=](\(*\w\/?%?\)?\)?,?)+)*\)?)*$/ 

Regular expression visualization

Debuggex Demo

這種利用該(a*|b*)*可以簡化爲(a|b)*

+0

這是一段現有的代碼。通過檢查後,發現這是沒有正確測試。 – Aashray