24

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

20(LBDD你好312312)土豆1651(98)

20(LBDD你好312312兔子)土豆1651(98)

20 ( 312312 ) 马铃薯 1651 (98)

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

括号里还有其他字符不知道怎么办

4

2 回答 2

70

这仅匹配第一个捕获组中的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

在这里看到它。

于 2012-12-10T18:54:23.407 回答
2

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

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

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

注意:根据您使用正则表达式的语言,您可能必须转义转义字符\,所以要小心。

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

于 2012-12-10T18:52:35.777 回答