Множественное замещение регулярных выражений в одном выражении Apache-NiFi - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть csv в следующем формате.

id,mobile
1,02146477474
2,08585377474
3,07646474637
4,02158789566
5,04578599525

Я хочу добавить новый столбец и добавить только первые 3 цифры в этот столбец (для особых случаев и для всех остальных NOT_VALID строк). Поэтому результат должен быть:

id,number,provider
1,02146477474,021
2,08585377474,085
3,07646474637,NOT_VALID
4,02158789566,021
5,04578599525,NOT_VALID

Я могу использовать следующее регулярное выражение для замены этого. Но я бы хотел использовать все возможные разговоры за один шаг. Использование UpdateRecord процессора.

${field.value:replaceFirst('085[0-9]+','085')}

Когда я использую что-то вроде этого:

${field.value:replaceFirst('085[0-9]+','085'):or(${field.value:replaceFirst('086[0-9]+','086')}`)}

Это заменяет все на false.

1 Ответ

2 голосов
/ 08 ноября 2019

Nifi использует Java regex

Как только вы используете обработку записей, это должно работать для вас:

${field.value:replaceFirst('^(021|085)?.*','$1')}

Группа () опционально ? ловит 021 или 085 в начале строки ^

Замена - $1 - это первая группа


PS: сайты типа https://regex101.com/помогает понять регулярное выражение

...