【问题标题】:Multine line input - extract numbers using regex多行输入 - 使用正则表达式提取数字
【发布时间】:2018-04-03 23:54:45
【问题描述】:

我有一个多行输入字符串,我只想提取电话号码。 现在我写的正则表达式正在获取数字,但也在第 2 行和第 3 行的文本之间获取数字。例如;

这是多行字符串;

123-(455)
Office365@gmail.com

我正在应用以下正则表达式

[(0-9),-]+

现在这个正则表达式正在提取123-(456)365。 我不希望我的正则表达式从 office365@gmail.com 获取数字

我查看了几个正则表达式,但似乎没有一个适合我的情况。非常感谢您的帮助。谢谢。

这里还有一个例子;

电话 (209) 123-2345, (345) 123-7890 还有 1 个 电子邮件 xxx87@aol.com, abc87@lycos.com 就业 这里有一些随机文本 这里有一些随机文本,编号为 123。

所以我只想从正则表达式中提取以下电话号码 (209) 123-2345, (345) 123-7890

【问题讨论】:

  • 您使用哪种编程语言?此外,形成模式的更多示例将很有用。
  • 号码总是单独排队吗?如果是这样,你可以这样做^[(0-9),-]+$

标签: regex string multiline


【解决方案1】:

也许您正在寻找单词边界?您不想匹配Office365 之类的单词中的任何数字。您想匹配前后有单词边界的数字。

这是你需要的:

\b[(0-9),-]+(\b|\n)

我必须添加\n,因为没有它与右括号不匹配,因为显然新行不是单词边界。

试试here

【讨论】:

  • 看看:regex101.com/r/HwV0XF/2 另外,(\b|n) 是多余的,可以单独写成\b。到目前为止,这个问题还不清楚。
  • 我再举一个例子。 Fallenhero 给出的正则表达式在从正则表达式中删除 $ 后对我有用。
【解决方案2】:

鉴于您列出的两个示例,这是可行的:

^[(0-9),-]+$

只需指出允许的字符是行首和行尾之间唯一允许的字符

【讨论】:

  • 值得注意的是,这需要打开多行标志。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-13
  • 1970-01-01
相关资源
最近更新 更多