我的正则表达式有问题。我已经玩了三个小时了,但没有发现任何效果。
我有这样的文字:
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/