次のようなサブ文字列の最初の2桁を抽出する正規表現を設計します。
- 文字で終わる
- 2から始めます
したがって、から"234b342d3"、一致結果は次のようになります。
23(from 234b)
2d(from 2d)
私のおおよその答えはですが"(?=1.*)[a-zA-Z]"、うまくいかないようです。
お返事ありがとうございます。
次のようなサブ文字列の最初の2桁を抽出する正規表現を設計します。
したがって、から"234b342d3"、一致結果は次のようになります。
23(from 234b)
2d(from 2d)
私のおおよその答えはですが"(?=1.*)[a-zA-Z]"、うまくいかないようです。
お返事ありがとうございます。
私はあなたが意味したと思います(?=2.*)...。
(?=2.*)2次の文字の後に1つ以上の文字が続くことを意味します。しかし、正規表現は次の文字がでなければならないと言っている[a-zA-Z]ので、何も一致しません(文字が同時に一致することはできないため2)[a-zA-Z]。
先読み(2.*[a-zA-Z])を削除するだけで正しい方向に進むことができますが、それでも次の点は間違っています。
.*ため234b342d、単に234bで2dはなく、前の一致ですでにカバーされているため、一致しません)したがって、最初の2文字を角かっこで囲んでグループに入れ、貪欲でない一致を()( ).*?の代わりに追加します。でも今:.*(2.).*?[a-zA-Z]
したがって、それを説明するために後読みを追加する必要があります。
したがって、最終的に次のようになります。
(2.)((?<=[a-zA-Z])|.*?[a-zA-Z])
次に、最初のグループを抽出します(これを行う方法は言語によって異なります)。
(2.)2で始まり、最初の2文字をグループに入れるようにしてください。あなたの例で
(?<=[a-zA-Z])説明するために後ろ向きです(aの後に文字が続きます)は貪欲ではない一致です-文字で終わることを意味します2d2
.*?
[a-zA-Z]