[英]Regular expression to extract numbers from a string
有人可以帮我构造这个正则表达式吗,拜托...
给定以下字符串...
我需要一个正则表达式来从文本中提取两个数字。 月份名称会有所不同。 括号、“widgets less”和“sprockets”文本预计不会在字符串之间发生变化,但是,如果该文本也能够变化,那将非常有用。
如果您确定只有 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
你可以使用类似的东西:
[^0-9]+([0-9]+)[^0-9]+([0-9]+).+
然后得到第一个和第二个捕获组。
我们可以使用 \\b 作为单词边界,然后; \\b\\d+\\b
在 bigquery 上,您需要确保在表达式前使用“r”:
REGEXP_EXTRACT(my_string,r'\d+')
这将从字符串列中提取所有数字。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.