RegEx

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.Выделить скобками блоки, которые должны остаться после замены, это группа захвата один:

 

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

 

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

 

 

 

3.Указать в замену группу захвата один:

 

$1

 

 

 

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

 

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

 

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

 

 

 

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

 

 

 

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

 

Результат:

 

 

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

 



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