1

次の正規表現は有効ですか? もしそうなら、それは何をしますか?

.*(.)(.)(.)(.)\4\3\2\1.*

数字のエスケープに関する情報が見つからないようです。なぜ 4 つ (.) なのですか?

Slashdotに最近掲載された Regex Sudoku/Crossword パズルから抜粋

4

2 に答える 2

3

それは数字を逃れることではありません。\#特定のキャプチャされたグループを参照するために表記を使用する多くの正規表現ライブラリがあります。つまり\1、最初にキャプチャされたグループです。

(.)それぞれがキャプチャグループなので、これは次のようなものと一致します

abcddcba

于 2013-02-28T01:39:23.613 に答える
2

それは有効に見えます、はい、そして単に「0個以上の文字、続いて任意の4文字、それらの同じ4文字、逆に、0個以上の文字を一致させる」という意味です。

  • .*=任意の文字の0回以上の出現
  • (.)(.)(.)(.)=任意の4文字(および後で参照するためにそれぞれを「キャプチャ」する)
  • \4\3\2\1=キャプチャされた4番目の文字に一致し、その後に3番目、2番目、1番目が続きます
  • .*=任意の文字の0回以上の出現

これらはすべて、正規表現に一致するすべての例です。

  • aweqwe12344321
  • 12344321asdfas
  • 12344321
  • asdf12344321asdf
于 2013-02-28T01:45:38.420 に答える