正则表达式:在括号之间找到一个数字

时间:2012-12-10 18:47:15

标签: regex

我需要一个正则表达式,在下面找到以粗体显示的数字:

20(L.B.D.D. hello 312312 )马铃薯1651(98)

20(L.B.D.D。你好 312312 兔子)马铃薯1651(98)

20( 312312 )马铃薯1651(98)

((\ d +))找到数字98

当括号中有其他字符时,我不知道该怎么办

2 个答案:

答案 0 :(得分:46)

这仅匹配第一个捕获组中的 312312

^.*?\([^\d]*(\d+)[^\d]*\).*$

Regexplanation:

^        # 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

here

答案 1 :(得分:1)

以下正则表达式应该这样做

@"\([^\d]*(\d+)[^\d]*\)"

括号表示捕获组,\(是转义括号,表示输入字符串中的实际括号。

作为注释:取决于你使用什么语言表达你的正则表达式,你可能必须逃脱你的逃脱字符\,所以要小心。

我要小心这一点,正则表达式的教科书限制之一是它无法正确识别带括号的文本。