拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 正则表达式在损坏的档案中查找某些电话号码

正则表达式在损坏的档案中查找某些电话号码

白鹭 - 2022-02-02 1970 0 0

我有以下任务:

使用带有 -Pao 选项和正则表达式的 grep 从损坏的档案中提取所有电话号码(解决方案:13 个电话号码)。正则表达式应尽可能匹配以下电话号码格式并尽可能短:

正则表达式在损坏的档案中查找某些电话号码

我尝试使用数字的相应开头,然后将它们放在一起并继续前进。

我现在有以下代码:

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

(模式为PCRE)

不幸的是,代码没有回传所需的结果,因为搜索条件似乎是相互排斥的。因此,我将不胜感激。

uj5u.com热心网友回复:

管道两侧是否有毛坯?如果是,第一种情况实际上是 ( \d{2}.)\s ,它与任何格式都不匹配。

https://regex101.com/r/qDmGIC/1 - 但它也会匹配不需要的组合,如 111 (1)11 11

uj5u.com热心网友回复:

试图找到可能的绝对最短的正则表达式将是愚蠢的差事。以下应该没问题,因为没有格式似乎是另一种格式的扩展。

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

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *