RegEx

Регулярные выражения.

Язык поиска и замены подстрок в тексте.

 

Например, где-то есть список файлов, среди которых нужно найти только такие:

 

4444_2020-04-19-12245678_TEXT_SUB.87754321.xml

4444_2020-04-20-12335678_TEXT_SUB.87664321.xml

4444_2020-04-21-12335578_TEXT_SUB.87664421.xml

4444_2020-04-22-12335577_TEXT_SUB.87664422.xml

 

Для поиска списка только таких файлов, подойдёт следующий Regex:

 

4444_\d+-\d+-\d+-\d+_TEXT.*\.\d+\.xml

 

\d

-- цифра

+

-- указатель на 1 или больше входящих элементов

-

-- литерал

.

-- любой символ

*

-- указатель на 0 символов или больше

\

-- указатель на то, чтобы следующий символ понимать буквально (не воспринимать как управляющую regEx конструкцию)

 

Пример списка файлов для данного поиска (упражнения) есть тут

 

 

 

 

Например, нужно в следующем коде поменять все тексты в кавычках на один единый текст:

 

@ApiProperty(value="Тескт 1")

@JSONProperty(value ="Тескт 2")  ggg()

@XMLProperty(value  = "Тескт 3")

 

Для этого, как вариант, с помощью RegEx:

 

1. Найти заменяемые строчки кода:

 

@.*Property\(value *= *".*?"\)

 

 

@

-- Литерал

.*

-- Любой символ и их может быть 0 или много

Property

-- Литерал

\(

-- Литеральная скобка

value

-- Литерал

*

-- 0 или больше пробелов

=

-- Литерал

*

-- 0 или больше пробелов

"

-- Литерал

.*?

-- Любой символ в нежадном режиме

"

-- Литерал

\)

-- Литеральная скобка

 

 

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

 

(@.*Property\(value *= *").*?"\)

 

Отображение первой группы захвата:

 

3. Указать в замену группу захвата № 1:

$1

 

 

4. Выделить скобками вторую группу захвата

 

(@.*Property\(value *= *").*?("\))

 

Отображение второй группы захвата:

 

5. Указать в замену заменяемый текст и группу захвата № 2:
 
$1Текст заменён$2

 

 

6. Заменить все

 

Результат:

 

 

Пример текста для данной замены (упражнения) есть тут

 



© 2021 | Анна Петросян | pashelp@yandex.ru