2012-01-24 1 views
0

これは可能であるかわかりませんが...数字の文字列を検索しようとしています。私はそれを行うためのパターンを持っていますが、特定の単語が番号とともに文書に表示された場合、それは検出されたくありません。Regex - 特定の単語が文書に含まれている場合は検索番号が除外されます

たとえば、すべてのドキュメントで9桁の数字を検索していますが、ドキュメントに「テスト」、「テスト」、「偽...」などの単語が含まれている場合は、9桁の数字を捕まえたくありません。

具体的には私はSSNを探していますが、スプレッドシートを含む特定のキーワードが文書に含まれている場合はSSNを捕まえたくありません。

答えて

0

間違いなく可能です。

(?s)\A(?!.*\b(?:test|testing|false)\b).*(\b\d{9}\b) 

試合後、9桁の番号は後方参照になります:あなたは、この情報を追加する必要があるので、それを行うにはどのようにして、正確に以下のソリューションがあなたのために動作しない場合には、正規表現エンジンに依存しますいいえ。 1.

説明:

(?s)     # Dot-matches-all mode (use (?m) in Ruby!) 
\A      # Start of string 
(?!      # Assert that it's impossible to match... 
.*      # any string, followed by 
\b      # a word boundary (start of word), 
(?:test|testing|false) # one of these keywords (don't capture it), 
\b      # a word boundary (end of word). 
) 
.*      # Match any string until... 
(\b\d{9}\b)    # an entire nine-digit number. 
+0

それは私が使用していますPerlの正規表現です。私がパターンをテストしたとき、ドキュメントにはテストやテストが必要だったように見えます。 – user1167513

+0

大変ありがとうございます!これはうまくいった! – user1167513

関連する問題