0
我不確定這是可能的,但是...我正在嘗試搜索數字字符串。我有一個工作模式來做到這一點,但如果文檔中出現某些單詞以及我不希望檢測到的數字。正則表達式 - 查找數字,但排除文檔中的特定單詞
例如我正在尋找所有文檔中的9位數字,但如果文檔包含單詞測試,測試,錯誤等等。我不希望9位數字被捕獲。
具體而言,我正在尋找SSN,但如果某些關鍵字在包括Excel電子表格的文檔中,我不希望SSN被捕獲。
我不確定這是可能的,但是...我正在嘗試搜索數字字符串。我有一個工作模式來做到這一點,但如果文檔中出現某些單詞以及我不希望檢測到的數字。正則表達式 - 查找數字,但排除文檔中的特定單詞
例如我正在尋找所有文檔中的9位數字,但如果文檔包含單詞測試,測試,錯誤等等。我不希望9位數字被捕獲。
具體而言,我正在尋找SSN,但如果某些關鍵字在包括Excel電子表格的文檔中,我不希望SSN被捕獲。
這絕對有可能。如何做到這一點正是依賴於正則表達式引擎,所以你需要的情況下,添加此信息下面的解決方案並不爲你工作:
(?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.
這是我使用Perl的正則表達式。當我測試這個模式時,似乎文檔必須有測試,測試和錯誤信息才能被捕獲。 – user1167513
非常感謝!這確實奏效! – user1167513