regex - 正则表达式问题(提取一个文本或另一个文本)

标签 regex perl parsing text

我的正则表达式有问题。我已经玩了三个小时了,但没有发现任何效果。

我有这样的文字:

Fax received from 45444849 ( 61282370000 )

我需要从括号中提取数字,所以我会得到61282370000。如果括号中没有任何内容(或只有空格),则应采用括号前的数字。我只成功地做到了这个表达式,它正确地从括号中获取数字:

Fax received from .* \(\s([^)]*)\s\)$

谢谢。

最佳答案

尝试正则表达式/(\d+)(?!\D*\d+)/ 它使用负前瞻来捕获字符串中的最后一个数字。

例如。

perl -le '$_="Fax received from 45444849 ( 61282370000 )"; /(\d+)(?!\D*\d+)/; print $1'

会给你61282370000。但是,

perl -le '$_="Fax received from 45444849 (  )"; /(\d+)(?!\D*\d+)/; print $1'

给 45444849 1 美元

关于regex - 正则表达式问题(提取一个文本或另一个文本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5947845/

相关文章:

parsing - 在Bison错误后如何跳过一行中的其余 token

perl - 为什么此代码会引发 "Useless use of anonymous hash ({}) in void context"警告。

c++ - 使用指定的分隔符逐行解析文本文件

javascript - javascript正则表达式中的冒号

regex - 使用正则表达式匹配 "magical"日期

perl - 当我使用 Test::Harness::runtests 运行 Perl 模块测试时,为什么它们会失败?

javascript - Perl DateTime的纪元是毫秒还是秒?

java - 在 Java 中读取 CSV 文件时跳过第一行

用于查找的 Python 正则表达式和用于从列表中删除的正则表达式

c++ - 解析数据的正则表达式