2016-09-19 5 views
0

私は現在、文字列に_12345678が含まれていることを検出するための正規表現パターンとして\d{8}を持っています。8桁の数字と1つのアンダースコアこれはtysons_meats_12345678のような文字列ではうまく動作しますが、偽陽性となるのでgeralds_meats_12345678_1234_12345678のような文字列では機能しません。文字列のためのより積極的な正規表現

文字列がany_char3cter!_12345678の場合にのみ真になる真正な正規表現パターンが必要です。真でない場合は、この後ろに8桁の数字が続きます(any_char3cter!_12345678_123_12345678)。

私はスタックオーバーフローを洗い流し、正規表現のチュートリアルをオンラインで無駄に見て3時間以上費やしました。私は何が欠けていますか?

+1

単純な否定ルールはどうでしょうか? 'not following by _' =' _ \ d {8}(?!_) ' –

+0

良い解決策を提供するための情報とテストケースがあまりありません。 @ rednebの正規表現はうまくいくようですが、データの詳細を十分に把握することはできません。 –

答えて

1

方法について:

\D+_\d{8}\b 

\bは、我々は唯一の単語の境界に一致していることを保証し、\D_前に文字が数字ではないことを意味します。

+0

'\ D + _ \ d {8} \ b'あなたの' \ D'の後ろに '+'を追加してください。ありがとう! –

+1

@ErikÁslandあなたが単語全体に一致したい場合に備えて、私はそれを加えました。 – redneb

+0

ありがとう、芽!助けを感謝します! –

関連する問題