提问人:jonlabr 提问时间:12/11/2012 最后编辑:Chris Seymourjonlabr 更新时间:12/11/2012 访问量:84970
正则表达式:在括号之间找到一个数字
Regex : Find a number between parentheses
问:
我需要一个正则表达式,在下面找到粗体数字:
20 (L.B.D.D. hello 312312) 土豆 1651 (98)
20 (L.B.D.D. 你好312312兔子) 土豆 1651 (98)
20 (312312) 马铃薯 1651 (98)
((\d+)) 求出数字 98
当括号中有其他字符时,我不知道该怎么办
答:
3赞
Sam I am says Reinstate Monica
12/11/2012
#1
以下正则表达式应该可以做到这一点
@"\([^\d]*(\d+)[^\d]*\)"
括号表示捕获组,are 转义括号表示输入字符串中的实际括号。\(
注意:根据你实现正则表达式的语言,你可能不得不转义你的转义字符,所以要小心。\
不过我会小心这一点,正则表达式的教科书限制之一是它无法正确识别带括号的文本。
78赞
Chris Seymour
12/11/2012
#2
这仅匹配第一个捕获组中的312312:
^.*?\([^\d]*(\d+)[^\d]*\).*$
重新解释:
^ # Match the start of the line
.*? # Non-greedy match anything
\( # Upto the first opening bracket (escaped)
[^\d]* # Match anything not a digit (zero or more)
(\d+) # Match a digit string (one or more)
[^\d]* # Match anything not a digit (zero or more)
\) # Match closing bracket
.* # Match the rest of the line
$ # Match the end of the line
请看这里。
评论
0赞
Sam I am says Reinstate Monica
12/11/2012
包括 和根本不包括它们有什么区别?^.*
.*$
0赞
Chris Seymour
12/11/2012
区别在于你匹配了多少线,你根本不需要它们会这样做,但我喜欢彻底@sampson-chen,我一点也不知道,但那是我最喜欢的演示网站。几天前我想出了这个词,现在它进入了每个答案!\(.*?(\d+).*\)
ruby
regex
regex
下一个:正则表达式在字符串中多次匹配
评论
(\([^0-9]*\d+[^0-9]*\))
Lookahead
Lookbehind
[\d,.]+(?=\))