簡體   English   中英

正則表達式在損壞的文件中查找某些電話號碼

[英]Regex to find certain phone numbers in a damaged file

我有以下任務:

使用帶有 -Pao 選項和正則表達式的 grep 從損壞的文件中提取所有電話號碼(解決方案:13 個電話號碼)。 正則表達式應盡可能匹配以下電話號碼格式並盡可能短:

在此處輸入圖像描述

我嘗試使用相應的數字開頭,然后將它們放在一起並繼續前進。

我現在有以下代碼:

grep -Pao '(\+\d{2}.) | (\d{3,4}) | (\d\s\d{2})' kaputt.txt

(模式為PCRE)

不幸的是,代碼沒有返回所需的結果,因為搜索條件似乎是互斥的。 因此,我將不勝感激這里的幫助。

管道兩側是否有空白? 如果是,則第一種情況實際上是 (+\d{2}.)\s ,它與任何格式都不匹配。

嘗試找到可能的絕對最短的正則表達式將是愚蠢的差事。 以下應該沒問題,因為沒有格式似乎是另一種格式的擴展。

grep -Pao "(?:\+\d\d \d\d \d{7}|\+\d\d (\d\d) \d{5} \- \d\d|\+\d\d (\d)\d\d \d{5}\-\d\d|\+\d\d-\d\d\-\d{7}|\+\d\d \d\d \d{5}\-\d\d|\d{4} \d \d{6}|\d \d\d \/ \d\d \d\d \d\d|\d{8}\-\d\d)" kaputt.txt

它只是從所需格式的圖像 (,) 中提取的文本,其中x替換為\d-替換為\-+替換為\+ ,並且每種格式替換由|分隔 .

如果要跨行匹配,則需要-z標志,並且每個空格都可以替換為,例如\s+

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM