2012-01-24 64 views
0

我不確定這是可能的,但是...我正在嘗試搜索數字字符串。我有一個工作模式來做到這一點,但如果文檔中出現某些單詞以及我不希望檢測到的數字。正則表達式 - 查找數字,但排除文檔中的特定單詞

例如我正在尋找所有文檔中的9位數字,但如果文檔包含單詞測試,測試,錯誤等等。我不希望9位數字被捕獲。

具體而言,我正在尋找SSN,但如果某些關鍵字在包括Excel電子表格的文檔中,我不希望SSN被捕獲。

回答

0

這絕對有可能。如何做到這一點正是依賴於正則表達式引擎,所以你需要的情況下,添加此信息下面的解決方案並不爲你工作:

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

比賽後,九位數字將在反向引用沒有。 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

相關問題