1

この文字列を入れる

THX1138: The Movie

この正規表現を介して

(.)(.)(\d)(\d+)

これに一致します

HX1138

試合からTを外すと右から左に動いているように見えますが、デフォルトは左から右だと思いました。たとえば、正規表現を右から左に移動する方法を尋ねる人々からのSOの質問があるので、デフォルトは左から右だと思いました。別の(。)を追加することによって

(.)(.)(.)(\d)(\d+)

一致します

THX1138

右から左への観察を確認します。それで、複数のキャプチャグループがある場合、最初のキャプチャの後に右から左に移動するという規則はありますか?

4

2 に答える 2

5

それらを分解しましょう

  1. (.)(.)(\d)(\d+)

    (.):任意の1文字に
    (.)一致:任意の1文字に一致
    (\d):任意の1桁
    (\d+)に一致:1つ以上の数字に一致

    THX1138: The Movie文字列を左から右に移動すると、数字ではないため、最初の3文字一致しません。Xしたがって、1文字前に進み、一致するものを見つけます。「任意の1文字」の要件にH一致し、 「任意の1桁」に一致し、「138」が最後に丸呑みされます。X1\d+

  2. (.)(.)(.)(\d)(\d+)

    (.):任意の1文字に
    (.)一致:任意の1文字に一致
    (.):任意の1文字に一致
    (\d):任意の1桁
    (\d+)に一致:1つ以上の数字に一致

    これで、文字列を左から右に通過すると、、、およびすべてが「任意の1文字」に一致し、もう一度「任意の1桁」に一致し、最後のに丸呑みされるためT、すぐに一致が見つかります。HX1138\d+

于 2013-01-03T02:37:08.260 に答える
1

事は、キャプチャされたものから始めてTHX1138一致することはできません。正規表現エンジンは、一致に失敗するのではなく、2桁の数字が続くものは何でも、2つの一致のみを返します。..\d\d+THX1138

于 2013-01-03T02:38:09.893 に答える