2

正規表現をデコードしようとしています。以下の正規表現の意味を確認する方法はありますか?

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

3 に答える 3

10

http://www.myezapp.com/apps/dev/regexp/show.wsまたはhttp://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
于 2013-03-11T19:32:23.717 に答える
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

これは、各一致のキャプチャグループの説明を含むRegExrへのリンクです

\また、ダブルインの理由は、Javaのfor\\dをエスケープするためです。\すべての言語がこれを必要とするわけではなく、私が理解していることから、3が必要な言語もあります。上記のRegExrで気付いた場合は、RegExrがRegexを正しく解析するようにそれらを削除しました。

于 2013-03-11T21:18:05.087 に答える
0

Regexperは、正規表現を分析するための優れたツールでもあります。

Regexperによって生成された画像

于 2017-07-05T13:03:43.817 に答える