Блокнот ++ REGEX Маскировка / Очистка данных - PullRequest
0 голосов
/ 05 ноября 2018

Требуется очистить производственный файл и передать его третьему лицу. Целостность / количество символов / цифр должно оставаться неизменным.

<ADD1<4, Privet Drive, Scotland, EC12 5FL, UK<

В приведенном выше примере нам нужно замаскировать число с 9, а символы с X или x (в зависимости от регистра).

Целевые данные должны быть.

<ADD1<9, Xxxxxx Xxxxx, Xxxxxxxx, XX99 9XX, XX<

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

NP ++ предположительно использует boost::regex движок.
И далее, по-видимому, он использует строку формата замены boost-extended.

Это означает, что вы можете поместить условие в строку замены для проверки
какая группа соответствует, затем заменить соответственно.

синтаксис: (?1yes:no) говорит, что группа 1 соответствует, да, иначе нет
синтаксис: (?{1}yes:no) такой же

Если у него есть boost :: regex, используйте

обновление

   only between <ADD1< and  <  

найти (?:(?!^)\G|<ADD1<)[^a-zA-Z0-9<]*\K(?:([A-Z])|([a-z])|\d)
заменить (?1X:(?2x:9))

Примечание - выберите формат строки замены как Boost Extended
если это не по умолчанию.

https://regex101.com/r/pJCsZa/1

Regex info

 (?:
      (?! ^ )
      \G                            # Start match where last left off
   |                              # or,
      <ADD1<                        # New start
 )
 [^a-zA-Z0-9<]*                # Optional non-letter or digit or <
 \K                            # Ignore matched characters up to here

 (?:                           # What's left, a letter or a digit
      ( [A-Z] )                     # (1)
   |  ( [a-z] )                     # (2)
   |  \d 
 )
0 голосов
/ 05 ноября 2018

Вы должны быть в состоянии сделать серию замен здесь. Выполните каждую замену, выполнив поиск в режиме регулярных выражений, а затем используйте соответствующую замену:

[A-Z] -> replace with X
[a-z] -> replace with x
[0-9] -> replace with 9

Я предлагаю выделить весь текст адреса и затем выполнить замену.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...