繁体   English   中英

从字符串中提取数字的正则表达式

[英]Regular expression to extract numbers from a string

有人可以帮我构造这个正则表达式吗,拜托...

给定以下字符串...

  • “四月(123 个小部件减去 456 个链轮)”
  • “五月(789 个小部件减去 012 个链轮)”

我需要一个正则表达式来从文本中提取两个数字。 月份名称会有所不同。 括号、“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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM