解码正则表达式

时间:2013-03-11 19:29:20

标签: java regex

我希望解码一个正则表达式。 有没有办法检查以下正则表达式的含义:

^(PC([Y\\d])|GC([Y\\d])|Y|\\d)\\d{4,5}$

3 个答案:

答案 0 :(得分:10)

您可以在http://www.myezapp.com/apps/dev/regexp/show.wshttp://www.debuggex.com/

使用正则表达式分析器
^ = start of string
() = capturing groups
[] = character classes
\d = digit in 0-9
\\ = literal backslash
| = OR
{} = count of leading item
$ = end of string

答案 1 :(得分:3)

以下是对正在发生的事情的分解。

正则表达式:^(PC([Y\\d])|GC([Y\\d])|Y|\\d)\\d{4,5}$

 1. ^        -  Beginning of line  
 2. (        -  Beginning of a capture group
 3. PC       -  Finds `PC` exactly  
 4. ([Y\\d]) -  Creates a capture group for a Y or a single digit (0-9)
 5. |        -  This is an OR statement
 6. GC       -  Finds `GC` exactly
 7. ([Y\\d]) -  Same as 4
 8. |        -  This is an OR statement
 9. Y        -  Finds `Y` exactly
10. |        -  This is an OR statement
11. \\d      -  This looks for a single digit (0-9)
12. )        -  End of capture group.  Lines 3-11 will be in this capture group
13. \\d{4,5} -  This will look any digit exactly 4 or 5 times
14. $        -  End of line

这里有3个捕获组:

1. (PC([Y\\d])|GC([Y\\d])|Y|\\d)
2. ([Y\\d])  (The first one)
3. ([Y\\d])  (The second one)

以下是有效匹配的列表(可以找到任何数字,我只使用123456来显示可以有多少个数字):

  • PCY1234
  • PCY12345
  • PCY1234
  • PCY12345
  • PC12345
  • PC123456
  • GC12345
  • GC123456
  • GCY1234
  • GCY12345
  • Y1234
  • Y12345
  • 12345
  • 123456

Here是RegExr的链接,其中包含每场比赛的捕获组说明。

此外,\中双\\d的原因是为了逃避Java的\。并非所有语言都需要这个,根据我的理解,有一些需要3.如果你注意到上面的RegExr,我删除了它们,所以RegExr会正确地解析正则表达式。

答案 2 :(得分:0)

Regexper也是分析正则表达式的好工具。

Image generated by Regexper