2014-01-23 88 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