Регулярные выражения: различия между версиями

Материал из Planfix
Перейти к: навигация, поиск
Нет описания правки
Нет описания правки
 
(не показано 18 промежуточных версий 2 участников)
Строка 5: Строка 5:
|description=Использование регулярных выражений в ПланФиксе  
|description=Использование регулярных выражений в ПланФиксе  
}}
}}
'''Регулярные выражения''' в [[Правила создания задач по e-mail | правилах обработки почты]] позволяют выделять нужный фрагмент текста в процессе [[Правило для почты: Извлечение данных | извлечения данных из письма]].


'''Регулярные выражения''' в [[Правила создания задач по e-mail | правилах обработки почты]] позволяют выделять нужный фрагмент текста в процессе [[Правило для почты: Извлечение данных | извлечения данных из письма]].
== Важно ==
*Использование регулярных выражений подразумевает наличие '''навыков программирования'''. Если у вас нет этих навыков, рекомендуем обратиться к специалистам, которые ими обладают.
*Регулярные выражения в ПланФиксе выполняются с опциями  Pattern.DOTALL и Pattern.MULTILINE. В онлайн [https://regex101.com/ валидаторе] — [https://p.pfx.so/pf/nG/2iUOoF.png gms].
*Дополнительно использовать регулярные выражения можно в функции [[Функция REGEXPFIND |REGEXPFIND]].




== Формат регулярных выражений ==
== Формат регулярных выражений ==
Используется формат регулярных выражений принятый в Java. Синтаксис регулярных выражений основан на использовании символов <([{\^-=$!|]})?*+.>, которые можно комбинировать с буквенными символами. В зависимости от роли их можно разделить на несколько групп:
В ПланФиксе используется формат регулярных выражений принятый в Java. Синтаксис регулярных выражений основан на использовании символов <([{\^-=$!|]})?*+.>, которые можно комбинировать с буквенными символами для получения метасимвола. Наиболее употребляемые метасимволы перечислены в таблице:
{| class="wikitable"
{| class="wikitable" style="text-align: center;"
|+1. Метасимволы для поиска совпадений границ строк или текста
|-
|-
! Метасимвол !!                                              Назначение
! Метасимвол !!                                              Назначение
|-
|-
|  <nowiki> - </nowiki> |  начало строки  
|  <nowiki> ^ </nowiki> ||  начало строки
|-
|  <nowiki> $  </nowiki> |конец строки
|-
|  <nowiki> \d    </nowiki> ||  цифровой символ
|-
|  <nowiki> \D    </nowiki> ||  нецифровой символ
|-
|  <nowiki> \s    </nowiki> ||  символ пробела
|-
|  <nowiki> \S    </nowiki> ||  непробельный символ
|-
|  <nowiki> \w    </nowiki> ||  буквенно-цифровой символ или знак подчёркивания 
|-
|  <nowiki> \W    </nowiki> ||  любой символ, кроме буквенного, цифрового или знака подчёркивания
|-
|  <nowiki> .  </nowiki> ||  любой символ
|-
|  <nowiki> \t    </nowiki> ||  символ табуляции
|-
|  <nowiki> \n    </nowiki> ||  символ новой строки
|-
|  <nowiki> \r    </nowiki> ||  символ возврата каретки
|-
|  <nowiki> [абв]    </nowiki> ||  любой из перечисленных (а,б, или в)
|-
|  <nowiki> [^абв]    </nowiki> ||  любой, кроме перечисленных (не а,б, в)
|-
|  <nowiki> [a-zA-Z]    </nowiki> ||  слияние диапазонов (латинские символы от a до z без учета регистра)
|-
|  <nowiki> [a-d[m-p]]    </nowiki> ||  объединение символов (от a до d и от m до p)
|-
|  <nowiki> [a-z&&[def]]    </nowiki> ||  пересечение символов (символы d,e,f)
|-
|  <nowiki> [a-z&&[^bc]]    </nowiki> ||  вычитание символов (символы a, d-z)
|-
|  <nowiki> ?  </nowiki> ||  один или отсутствует
|-
|  <nowiki> *  </nowiki> ||  ноль или более раз 
|-
|  <nowiki> +  </nowiki> ||  один или более раз
|-
|  <nowiki> {n}  </nowiki> ||  n раз
|-
|  <nowiki> {n,}  </nowiki> ||  n раз и более 
|-
|  <nowiki> {n,m}    </nowiki> ||  не менее n раз и не более m раз
|-
|-
|}
|}




== Полезная информация ==
== Полезная информация ==
*В результат обработки текста при помощи регулярного выражения попадает первая capturing группа. Соответственно, то, что нужно, чтобы было в результате надо взять в скобки, а остальные группы сделать non-capturing '''(?:)'''
*В результат обработки текста при помощи регулярного выражения попадает первая capturing группа. Соответственно, то, что нужно, чтобы было в результате надо взять в скобки, а остальные группы сделать non-capturing '''(?:)'''
*Больше о работе регулярных выражений можно прочитать в [https://javarush.ru/groups/posts/regulyarnye-vyrazheniya-v-java этой статье].





Текущая версия от 13:09, 21 октября 2022

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


Важно

  • Использование регулярных выражений подразумевает наличие навыков программирования. Если у вас нет этих навыков, рекомендуем обратиться к специалистам, которые ими обладают.
  • Регулярные выражения в ПланФиксе выполняются с опциями Pattern.DOTALL и Pattern.MULTILINE. В онлайн валидатореgms.
  • Дополнительно использовать регулярные выражения можно в функции REGEXPFIND.


Формат регулярных выражений

В ПланФиксе используется формат регулярных выражений принятый в Java. Синтаксис регулярных выражений основан на использовании символов <([{\^-=$!|]})?*+.>, которые можно комбинировать с буквенными символами для получения метасимвола. Наиболее употребляемые метасимволы перечислены в таблице:

Метасимвол Назначение
^ начало строки
$ конец строки
\d цифровой символ
\D нецифровой символ
\s символ пробела
\S непробельный символ
\w буквенно-цифровой символ или знак подчёркивания
\W любой символ, кроме буквенного, цифрового или знака подчёркивания
. любой символ
\t символ табуляции
\n символ новой строки
\r символ возврата каретки
[абв] любой из перечисленных (а,б, или в)
[^абв] любой, кроме перечисленных (не а,б, в)
[a-zA-Z] слияние диапазонов (латинские символы от a до z без учета регистра)
[a-d[m-p]] объединение символов (от a до d и от m до p)
[a-z&&[def]] пересечение символов (символы d,e,f)
[a-z&&[^bc]] вычитание символов (символы a, d-z)
 ? один или отсутствует
* ноль или более раз
+ один или более раз
{n} n раз
{n,} n раз и более
{n,m} не менее n раз и не более m раз


Полезная информация

  • В результат обработки текста при помощи регулярного выражения попадает первая capturing группа. Соответственно, то, что нужно, чтобы было в результате надо взять в скобки, а остальные группы сделать non-capturing (?:)
  • Больше о работе регулярных выражений можно прочитать в этой статье.


Перейти