有人可以帮我建立这个正则表达式,请...正则表达式从字符串中提取号码
鉴于以下字符串...
- “四月(123个更少的部件456个链轮)”
- “五月(789个部件少012链轮)”
我需要一个正则表达式,从文本中提取的两个数字。月份名称会有所不同。括号中的“小部件少”和“链轮”文本预计不会在字符串之间发生变化,但是如果能够改变这些文本,它将非常有用。
在此先感谢。
有人可以帮我建立这个正则表达式,请...正则表达式从字符串中提取号码
鉴于以下字符串...
我需要一个正则表达式,从文本中提取的两个数字。月份名称会有所不同。括号中的“小部件少”和“链轮”文本预计不会在字符串之间发生变化,但是如果能够改变这些文本,它将非常有用。
在此先感谢。
,如果你肯定知道,有只将是2个地方,你必须在你的字符串的数字的列表,这是你要拉的唯一的事情出,那么你应该能够简单地使用
\d+
^\s*(\w+)\s*\(\s*(\d+)\D+(\d+)\D+\)\s*$
应该工作。比赛结束后,反向引用1将包含月份,反向引用2将包含第一个数字,反向引用3将包含第二个数字。
说明:
^ # start of string
\s* # optional whitespace
(\w+) # one or more alphanumeric characters, capture the match
\s* # optional whitespace
\( # a (
\s* # optional whitespace
(\d+) # a number, capture the match
\D+ # one or more non-digits
(\d+) # a number, capture the match
\D+ # one or more non-digits
\) # a)
\s* # optional whitespace
$ # end of string
+1的解释,但我必须给西雅图伦纳德正确的答案,因为它是如此简单。 – 2010-11-16 15:49:47
您解决方案的好解释 – itsmatt 2014-03-21 12:38:47
你可以使用类似:
[^0-9]+([0-9]+)[^0-9]+([0-9]+).+
然后获得第一个和第二个捕获组。
您击败了我!上面的正则表达式,当全局应用于整个字符串时(这是依赖于实现的,所以OP必须向我们提示语言),将提取数字并忽略其余部分。 – 2010-11-15 18:06:35
例如,在ruby中它会是'matches = string.scan(/ \ d + /)' – 2010-11-15 18:45:25
我很抱歉,我正在使用.NET实现。 – 2010-11-15 19:16:10