Регулярное выражение для замены нескольких шаблонов с одним не работает - PullRequest
3 голосов
/ 27 мая 2019

Я работаю над заменой нескольких вхождений строки 0000 на одно случайное число в SQL HANA

Я использовал эти шаблоны

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

  2. '([0000 ]+) \1'

, но заменяются все вхождения, кроме последнего вхождения шаблона

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

Токовый выход

RANDOM 0000

ожидаемый вывод

RANDOM

Ответы [ 2 ]

3 голосов
/ 27 мая 2019

Попробуйте это регулярное выражение:

((0000) +)+(0000)

Смотрите здесь

И если можно использовать любую цифру и больше \ меньше раз, чем 4:

(\d+ +)+\d+

Удачи!

2 голосов
/ 27 мая 2019

Вы можете использовать

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

См. Демоверсию regex

Вам нужно \d для сопоставления цифр (если вам нужно сопоставить буквы и _ продолжайте использовать \w). Кроме того, чтобы соответствовать 1 или более повторениям последовательности шаблонов, вам нужна (?:....)+, количественная группа + без захвата.

Детали шаблона

  • \b - граница слова
  • (\d+) - Группа 1: одна или несколько цифр
  • (?:\s+\1)+ - 1+ повторений из 1+ пробелов и то же значение, что и в группе 1
  • \b - граница слова

График регулярных выражений :

enter image description here

...