正则表达式只提取数字,但只有字符串不包含任何字母
问题描述:
我想从可能包含一些特殊字符(比如说“+ - ()”)但不包含任何其他字符的字符串中提取数字:正则表达式只提取数字,但只有字符串不包含任何字母
"+123 (456) 7-8" -> "1, 2, 3, 4, 5, 6, 7, 8" is extracted
"123a45" -> pattern matching fails, nothing is extracted
"1234 B" -> pattern matching fails, nothing is extracted
答
你想要的是能够与GNU的sed这样的:
sed -r -n '/^[-+0-9() ]+$/ {s/[^0-9]//g; s/([0-9])/\1, /g; p;}' file
- 重新
^[-+0-9() ]+$
你的线条相匹配,应该在其他重工具 工作210
- 的
{ ... }
内的部分产生的格式化输出,你需要采取对您的工具
答
免费代码在这里:
.*[^\d^+^(^)^\-^\s]+.*(?:\d)|(?:\d)(?=.*[^\d^+^(^)^\-^\s]+.*)|(\d)
说明:除“其他[^\d^+^(^)^\-^\s]
匹配字符+ - ()“和号码
好吧,所以写一个正则表达式来做到这一点。 – jonrsharpe
...我拿出了一个原因,请参阅http://meta.stackexchange.com/q/2950/248731 – jonrsharpe
我试着玩有点类似的问题的解决方案:[正则表达式匹配行不包含一个单词?](http://*.com/questions/406230/regular-expression-to-match-line-that-doesnt-contain-a-word)但没有多少运气。如果任何字母出现,我可以得到模式匹配失败,但如果sting也包含“ - ()+”字符,我不能提取数字... –