正则表达式用单个不起作用替换多个模式

Regex to replace multiple patterns with single not working

我正在努力用 HANA 中的单个随机数替换多次出现的字符串 0000 SQL

我用过这些模式

  1. '(\w+)\s+'

  2. '([0000 ]+) '

但除最后一次出现的模式外,所有出现的地方都被替换

SELECT REPLACE_REGEXPR('(\w+)\s+' IN '0000 0000 0000' WITH ROUND(RAND()*1000) OCCURRENCE ALL) AS a2
FROM DUMMY; 

当前输出为

RANDOM 0000

预期输出是

RANDOM

试试这个正则表达式:

((0000) +)+(0000)

Look Here

如果可以使用任意数字且次数多\少,则 4:

(\d+ +)+\d+

祝你好运!

您可以使用

\b(\d+)(?:\s+)+\b

regex demo

您需要 \d 来匹配数字(如果您需要匹配字母并且 _ 继续使用 \w)。 此外,要匹配模式序列的 1 次或多次重复,您需要 (?:....)++ 量化的 non-capturing 组。

图案详情

  • \b - 单词边界
  • (\d+) - 第 1 组:一个或多个数字
  • (?:\s+)+ - 1+ 个空格的 1+ 次重复以及与第 1 组中捕获的值相同的值
  • \b - 单词边界

Regex graph: