除了匹配的正则表达式模式,有人可以帮我删除一行中的所有内容吗?

时间:2015-10-09 08:47:26

标签: regex pattern-matching

我使用^.*?(\d{3}\D?\d{3}\D?\d{4}).*$并替换为\1$1 这样除了电话号码之外,每个单独行中的所有内容都被删除。示例链接https://regex101.com/r/jK6eD8/3

基本上它的工作原理如下

第1行:这是废文,只有818-333-2323保持在行

第2行:只保留以下数字4445553333。

我需要帮助的是为下面的电话格式找到匹配的正则表达式模式,并删除其各自行中的所有其他内容除了匹配的电话号码就像上面的链接一样。格式如下。

07123452670
07812 345 931
07412 123466
00447912345188
+971557017442
+971 557 856 832
0414 934 993

所以基本上,我需要一个匹配11位数的正则表达式。 (07123456270)

匹配5位数字,后跟空格,后跟3位数字,后跟空格,后跟3位数字。 (07812 345 931)

匹配5位数字,后跟空格,后跟6位数字(07412 123466)

匹配14位数字(12345678901234)

匹配后跟12位数后的+号(+ 971557017442)

匹配+后跟3位数,空格,后跟3位数,空格,3位 数字(+971 557 856 832)

最后一个,4位数,空格,3位数,空格,3位数。 (0414 934 993)

有人请帮忙

2 个答案:

答案 0 :(得分:1)

此正则表达式符合要求: ^.*?(\+?(?:\d{11,14})|(?:\d{5}\s(?:\d{3}\s\d{3}|\d{6}))|(?:\d{3}(?:\s\d{3}){3})|(?:\d{4}\s\d{3}\s\d{3})).*$

正如您在此处所见:https://regex101.com/r/lY3jW0/1

我希望它有所帮助

答案 1 :(得分:0)

如果您正在分析的文本不包含其他“长”数字,您可以获得带有可选空格,完整停靠点和它们之间的破折号的数字串。它看起来像这样:

^.*?(\d[\d .-]{9,13}\d).*$

匹配组必须包含

  1. 一个数字,然后是
  2. 9-13个字符,可以是数字,空格,短划线或句号。
  3. 然后是
  4. 最后一位数字。
  5. 虽然数字的构成并不严格,但它可能不适合您的需要。但话说回来,它可能;)

    此致