1

私はpython3を学ぼうとしていますが、正規表現で少しスタックしています。このHOWTOを勉強したのですが、よくわかりませんでした。このページ

    1\d2\D2
    ^a\w+z$
4

2 に答える 2

9

式を読み取り、適切な文字を段階的に選択することで、サンプル文字列を生成できます。

たとえば、1\d2\D2:

1\d2\D2 -> 1
^ 1 はリテラル数 1 を意味します

1\d2\D2 -> 17
 ^^ \d は任意の数字 (0-9) を意味します。7を選びましょう。

1\d2\D2 -> 172
   ^ 2 は、文字どおりの数値 2 を意味します。

1\d2\D2 -> 172X
    ^^ \D は、数字 (0-9) 以外のすべてを意味します。×を選びましょう

1\d2\D2 -> 172X2
      ^ 2 は、文字どおりの数値 2 を意味します。

172X2と一致します1\d2\D2

あなたの次のもの - ^a\w+z$- 複数の長さを持つことができます:

^a\w+z$
^ これは、行頭にいる必要があることを意味します (行頭にいる必要があります)。

^a\w+z$ -> a
 ^ a はリテラル文字 a を意味します

^a\w+z$ -> a4
  ^^ \w は、数字、文字、または「_」を意味します。4を選びましょう。

^a\w+z$ -> a4
    ^ + は、必要に応じて左にあるものに戻ることができることを意味するので、そうしましょう...

^a\w+z$ -> a4Q
  ^^ \w は、数字、文字、または「_」を意味します。Qを選びましょう。

^a\w+z$ -> a4Q
    ^ + は、必要に応じて左にあるものに戻ることができることを意味するので、そうしましょう...

^a\w+z$ -> a4Q1
  ^^ \w は、数字、文字、または「_」を意味します。1を選びましょう。

^a\w+z$ -> a4Q1
    ^ + は左にあるものに戻ることができることを意味しますが、ここでやめましょう

^a\w+z$ -> a4Q1z
     ^ z は文字通りの文字 z を意味します

^a\w+z$ -> a4Q1z
      ^ $ は、行末にいる必要があることを意味し、行末にいます (したがって、それ以上追加することはできません)

soa4Q1zは と一致し^a\w+z$ます。そうでしょうa4z(確認できます...)

ジャンプして繰り返すことができるという点*で似ていますが、左側にあるものを完全にスキップできること意味します(つまり、 「少なくとも1回繰り返す」ことを意味しますが、 「0回以上繰り返す」ことを意味します(「 zero" はスキップです))。++*

更新:

[abc]aは、bまたはのいずれかを選択することを意味しcます。

x{2,3}xは、 2 ~ 3 回追加することを意味します (同様+ですが、回数に制限があります)。そう、xxまたはxxx

\1はもう少し複雑です。最初の (数字が 1 であるため) かっこのセットの中にあるものを見つけて、それを追加する必要があります。したがって、たとえば、左から右に作業して を選択した場合(\d+)\1に一致します。232323(\d+)

于 2012-05-26T20:17:58.140 に答える
0

一致するいくつかのサンプルを生成するには、おそらく正規表現を解析し、正規表現の各チャンクを次のように記述した関数に送信しますgetRandomSatisfyingText。3 つの一意の文字列を取得するまで、何度も呼び出します。アトミック アサーション (先読みと後読み) のサポートを開始するまでは、おそらくそれほど難しくはないでしょう。

于 2012-05-26T20:17:47.987 に答える