3

文字列のどこにいても5桁の数字を解析する正規表現を作成しようとしていますが、最初と最後のケースを取得する方法がわからないようです。

私は次のようにパターンを使用しました\\d{5}が、これはより大きな数のサブセットを取得します...しかし、私がそのようなことをしようとすると\\D\\d{5}\\D、エンドケースでは機能しません。ここで助けていただければ幸いです。ありがとう!

いくつかの例(55555抽出する必要があるもの)の場合:

At the beginning of the string
"55555blahblahblah123456677788"

In the middle of the string
"2345blahblah:55555blahblah"

At the end of the string
"1234567890blahblahblah55555"
4

1 に答える 1

6

それらをサポートする言語を使用しているので、ネガティブルックアラウンドを使用します。

"(?<!\\d)\\d{5}(?!\\d)"

\\d{5}これらは、あなたの前にも後ろにも数字がないことを主張します。それが文字列の端によるものか、数字以外の文字によるものかは関係ありません。

これらのアサーション自体はゼロ幅の一致であることに注意してください。したがって、これらのキャラクターは実際には試合に含まれません。そのため、これらは後読みおよび先読みと呼ばれます。彼らは実際にそれを試合の一部にすることなく、そこにあるものをチェックするだけです。これは、を使用することのもう1つの欠点であり\\D、一致に数字以外の文字が含まれる(またはキャプチャグループを使用する必要がある)。

于 2012-10-29T22:32:18.843 に答える