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

lfapxunr  于 2023-02-05  发布在  其他
关注(0)|答案(5)|浏览(192)

有人能帮我构造这个正则表达式吗?
给定以下字符串...

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

我需要一个正则表达式,将从文本中提取两个数字。月份名称将有所不同。括号,“widget less”和“sprockets”文本预计不会在字符串之间发生变化,但是,如果这个文本能够变化,这将是非常有用的。

0mkxixxg

0mkxixxg1#

如果你确信在你的字符串中只有两个地方有一个数字列表,并且这是你唯一要提取的东西,那么你应该能够简单地使用

\d+
bhmjp9jg

bhmjp9jg2#

^\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
yfwxisqw

yfwxisqw3#

你可以用这样的方式:
[^0-9]+([0-9]+)[^0-9]+([0-9]+).+
然后获得第一和第二捕获组。

vh0rcniy

vh0rcniy4#

我们可以像\b\d+\b一样使用\b作为单词边界。

ctzwtxfj

ctzwtxfj5#

在bigquery上,您需要确保在表达式前面使用“r”:

REGEXP_EXTRACT(my_string,r'\d+')

这将从字符串列中提取所有数字。

相关问题