Шаблон, соответствующий заданному регулярному выражению
создает шаблон, соответствующий регулярному выражению.pat
= regexpPattern(expression
)
задает дополнительные опции с одним или несколькими аргументами пары "имя-значение". Для примера можно задать pat
= regexpPattern(expression
,Name,Value
)'IgnoreCase'
как true
чтобы игнорировать случай при совпадении..
Использование regexpPattern
для задания шаблонов с использованием регулярных выражений, которые могут использоваться в качестве входов для функций поиска текста.
Найти слова, которые начинаются с c
, заканчивается на t
, и содержат одну или несколько гласных между ними.
txt = "bat cat can car coat court CUT ct CAT-scan"; expression = 'c[aeiou]+t';
Регулярное выражение 'c[aeiou]+t'
задает этот шаблон:
c
должен быть первым символом.
c
должен содержать один из символов в скобках, [aeiou]
.
Шаблон в скобках должен происходить один или несколько раз, как обозначено +
оператор.
t
должен быть последним символом, без символов между шаблоном в скобках и t
.
Извлеките шаблон. Обратите внимание, слова CUT
и CAT
не совпадают, потому что они заглавные.
pat = regexpPattern(expression); extract(txt,pat)
ans = 2x1 string
"cat"
"coat"
Шаблоны, созданные с помощью regexpPattern
может быть объединен с другими функциями шаблона, чтобы создать более сложные шаблоны. Использование whitespacePattern
и lettersPattern
чтобы создать новый шаблон, который также совпадает со словами после соответствия регулярного выражения, а затем извлечь новый шаблон.
pat = regexpPattern(expression) + whitespacePattern + lettersPattern; extract(txt,pat)
ans = 2x1 string
"cat can"
"coat court"
newline
ПерсонажиСоздайте строку , содержащую newline
символ. Используйте регулярное выражение '.'
чтобы соответствовать любому символу, кроме newline
персонажи.
txt = "First Line" + newline + "Second Line"
txt = "First Line Second Line"
expression = '.+';
Регулярное выражение '.+'
соответствует одному или нескольким символам, включая newline
персонажи. Подсчитайте, сколько раз шаблон совпадает.
pat = regexpPattern(expression); count(txt,pat)
ans = 1
Создайте новый шаблон регулярного выражения, но на этот раз задайте DotExceptNewline
как true
чтобы шаблон не совпадал newline
персонажи. Подсчитайте, сколько раз шаблон совпадает.
pat = regexpPattern(expression,"DotExceptNewline",true);
count(txt,pat)
ans = 2
Создание txt
как строка.
txt = "Hello World";
Выражение '. *'
совпадает только с отдельными символами из-за пробелов между .
и *
. Создайте шаблон, соответствующий регулярному выражению '. *'
, и затем извлеките шаблон.
expression = '. *';
pat = regexpPattern(expression);
extract(txt,pat)
ans = 10x1 string
"H"
"e"
"l"
"l"
"o "
"W"
"o"
"r"
"l"
"d"
Создайте новый шаблон регулярного выражения, но на этот раз задайте FreeSpacing
как true
чтобы игнорировать пробелы в регулярном выражении. Извлеките новый шаблон.
pat = regexpPattern(expression,"FreeSpacing",true);
extract(txt,pat)
ans = "Hello World"
Найти слова, которые начинаются с c
, заканчивается на t
, и содержат одну или несколько гласных между ними, независимо от случая.
txt = "bat cat can car coat court CUT ct CAT-scan"; expression = 'c[aeiou]+t';
Регулярное выражение 'c[aeiou]+t'
задает этот шаблон:
c
должен быть первым символом.
c
должен содержать один из символов в скобках, [aeiou]
.
Шаблон в скобках должен происходить один или несколько раз, как обозначено +
оператор.
t
должен быть последним символом, без символов между шаблоном в скобках и t
.
Извлеките шаблон. Обратите внимание, что слова CUT и CAT не совпадают, потому что они заглавные.
pat = regexpPattern(expression); extract(txt,pat)
ans = 2x1 string
"cat"
"coat"
Создайте новый шаблон регулярного выражения, но на этот раз задайте IgnoreCase
как true
чтобы игнорировать регистр с регулярным выражением. Извлеките новый шаблон.
pat = regexpPattern(expression,"IgnoreCase",true);
extract(txt,pat)
ans = 4x1 string
"cat"
"coat"
"CUT"
"CAT"
^
и $
Привязки как линейные или текстовые привязкиМетасимволы ^
и $
может использоваться для задания привязок линий или текстовых привязок. Поведение, которое regexpPattern
использование задано в Anchors
опция.
Создание txt
как строка , содержащая newline
персонажи.
txt = "cat" + newline + "bat" + newline + "rat";
Регулярное выражение '^. +? $' соответствует одному или нескольким символам между двумя якорями. Создайте шаблон для этого регулярного выражения и задайте Anchors
как “text”
так что привязки ^ и $ рассматриваются как привязки текста. Извлеките шаблон.
expression = '^.+?$'; pat = regexpPattern(expression,"Anchors","text"); extract(txt,pat)
ans = "cat bat rat"
Создайте новый шаблон регулярного выражения, но на этот раз задайте Anchors
как “line”
так, чтобы якоря ^ и $ рассматривались как якоря линии. Извлеките новый шаблон.
pat = regexpPattern(expression,"Anchors","line"); extract(txt,pat)
ans = 3x1 string
"cat"
"bat"
"rat"
expression
- Регулярное выражениеРегулярное выражение, заданное как вектор символов, массив ячеек векторов символов или строковых массивов. Каждое выражение может содержать символы, метасимволы, операторы, лексемы и флаги, которые задают шаблоны, совпадающие с str
.
В следующих таблицах описываются элементы регулярных выражений.
Метасимволы
Метасимволы представляют буквы, области значений букв, цифры и пробел символов. Используйте их, чтобы создать обобщенный шаблон символов.
Метасимвол | Описание | Пример |
---|---|---|
| Любой один символ, включая пустое пространство |
|
| Любой символ, содержащийся в квадратных скобках. К следующим символам относятся буквально: |
|
| Любой символ, не содержащийся в квадратных скобках. К следующим символам относятся буквально: |
|
| Любой символ в области значений |
|
| Любой буквенный, числовой или символ подчеркивания. Для английских наборов символов, |
|
| Любой символ, который не является буквенным, числовым или подчеркивающим. Для английских наборов символов, |
|
| Любой символ белого пространства; эквивалентно |
|
| Любой непустой символ; эквивалентно |
|
| Любая числовая цифра; эквивалентно |
|
| Любой недигит символ; эквивалентно |
|
| Символ восьмеричного значения |
|
| Символ шестнадцатеричного значения |
|
Представление символов
Оператор | Описание |
---|---|
| Предупреждение (звуковой сигнал) |
| Клавиша Backspace |
| Подача формы |
| Новая линия |
| Возврат каретки |
| Горизонтальная вкладка |
| Вертикальная вкладка |
| Любой символ со специальным смыслом в регулярных выражениях, которым вы хотите соответствовать буквально (для примера используйте |
Кванторы
Количественники задают количество раз, когда шаблон должен происходить в соответствующем тексте. expr
представляет любое регулярное выражение.
Квантор | Количество раз, когда происходит выражение | Пример |
---|---|---|
| 0 или более раз последовательно. |
|
| 0 раз или 1 раз. |
|
| 1 или более раз последовательно. |
|
| По крайней мере
|
|
| По крайней мере
|
|
| Точно Эквивалентно |
|
Количественные значения могут появляться в трех режимах, описанных в следующей таблице. q представляет любой из количеств в предыдущей таблице.
Способ | Описание | Пример |
---|---|---|
| Жадное выражение: соответствовать как можно большему количеству символов. | Учитывая текст
|
| Ленивое выражение: соответствовать столько символов, сколько нужно. | Учитывая текст
|
| Посессивное выражение: максимально совпадает, но не повторяет никаких фрагментов текста. | Учитывая текст |
Группировка операторов
Группирующие операторы позволяют вам захватывать лексемы, применять один оператор к нескольким элементам или отключать обратное отслеживание в определенной группе. Лексемы являются фрагментами совпадающего текста, которые вы задаете, заключая часть регулярного выражения в круглые скобки.
Группировка оператора | Описание | Пример |
---|---|---|
| Группируйте элементы выражения и захватывайте лексемы. |
|
| Группируйте, но не захватывайте лексемы. |
Не группируя, |
| Группируйте атомарно. Не возвращайте данные в группу, чтобы завершить соответствие, и не захватывайте лексемы. |
|
| Совпадение выражений Если есть совпадение с Можно включать |
|
Якоря
Привязки в выражении совпадают с началом или концом входа текста или слова.
Якорь | Соответствует... | Пример |
---|---|---|
| Начало входного текста. |
|
| Конец входного текста. |
|
| Начало слова. |
|
| Конец слова. |
|
Интерполяционные утверждения
Интерполяционные утверждения ищут шаблоны, которые непосредственно предшествуют или следуют предполагаемому соответствию, но не являются частью соответствия.
Указатель остается в текущем местоположении и символах, соответствующих test
выражение не захватывается и не отбрасывается. Поэтому утверждения lookahead могут совпадать с перекрывающимися группами символов.
Интерполяционная заявка | Описание | Пример |
---|---|---|
| Смотрите вперед для символов, которые совпадают |
|
| Смотрите вперед для символов, которые не совпадают |
|
| Следите за символами, которые совпадают |
|
| Просмотрите символы, которые не совпадают с |
|
Если вы задаете значения перед выражением, операция эквивалентна логической AND
.
Операция | Описание | Пример |
---|---|---|
| Соответствовать обоим |
|
| Совпадайте с |
|
Логические и условные операторы
Логические и условные операторы позволяют вам проверить состояние заданного условия, а затем использовать результат, чтобы определить, какой шаблон, если он есть, будет соответствовать следующему. Эти операторы поддерживают логические OR
, и if
или if/else
условия.
Условия могут быть лексемами, интерполяционными операторами или динамическими выражениями формы (?@cmd)
. Динамические выражения должны возвращать логическое или числовое значение.
Условный оператор | Описание | Пример |
---|---|---|
| Совпадение выражений Если есть совпадение с |
|
| Если условие |
|
| Если условие |
|
Операторы токенов
Лексемы являются фрагментами совпадающего текста, которые вы задаете, заключая часть регулярного выражения в круглые скобки. Вы можете обратиться к лексеме по его последовательности в тексте (порядковая лексема) или назначить имена лексем для более легкого обслуживания кода и читаемых выходов.
Оператор порядкового маркера | Описание | Пример |
---|---|---|
| Захват в лексему символов, соответствующих вложенному выражению. |
|
Оператор именованных маркеров | Описание | Пример |
---|---|---|
| Захват в именованную лексему символов, соответствующих вложенному выражению. |
|
Примечание
Если выражение имеет вложенные круглые скобки, MATLAB® захватывает лексемы, которые соответствуют крайнему набору круглых скобок. Для примера, учитывая шаблон поиска '(and(y|rew))'
MATLAB создает лексему для 'andrew'
но не для 'y'
или 'rew'
.
Комментарии
Персонажи | Описание | Пример |
---|---|---|
(?#comment) | Вставьте комментарий в регулярное выражение. Текст комментария игнорируется при совпадении с входами. |
|
Флаги поиска
Флаги поиска изменяют поведение для совпадающих выражений. Альтернативой использованию флага поиска в выражении является передача option
входной параметр.
Флаг | Описание |
---|---|
(?-i) | Сопоставьте случай буквы (по умолчанию для |
(?i) | Не совпадайте буква случаем (по умолчанию для |
(?s) | Совпадайте с точкой ( |
(?-s) | Сопоставьте точку в шаблоне с любым символом, который не является символом новой строки. |
(?-m) | Соответствовать |
(?m) | Соответствовать |
(?-x) | Включите символы и комментарии при совпадении (по умолчанию). |
(?x) | Игнорируйте символы и комментарии при совпадении. Использование |
Выражение, которое изменяет флаг, может появиться либо после круглых скобок, таких как
(?i)\w*
или внутри круглых скобок и отделенных от флага двоеточием (:
), такие как
(?i:\w*)
Последний синтаксис позволяет изменять поведение на часть большего выражения.
Типы данных: char
| cell
| string
Примечание
regexpPattern
не поддерживает обратные ссылки, условия, основанные на обратных ссылках, и динамические регулярные выражения.
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
'DotExceptNewline',true,'FreeSpacing',false
'DotExceptNewline'
- Соответствие точек новых линийfalse
или 0
(по умолчанию) | true
или 1
Соответствие точек newline
символ, заданный как разделенная разделенными запятой парами, состоящая из 'DotExceptNewline'
и логический скаляр. Установите эту опцию равным 0 (false), чтобы исключить newline
символы из соответствия точек.
Пример: pat = regexpPattern('m.','DotExceptNewline',true)
'FreeSpacing'
- Соответствие пустому пространствуfalse
или 0
(по умолчанию) | true
или 1
Совпадающий символ белого пространства, заданный как разделенная разделенными запятой парами, состоящая из 'FreeSpacing'
и логический скаляр. Установите эту опцию равным 1 (true), чтобы пропустить пробелы символов и комментариев при совпадении.
Пример: pat = regexpPattern('m.','FreeSpacing',false)
'IgnoreCase'
- Игнорировать случай при совпаденииfalse
или 0
(по умолчанию) | true
или 1
Игнорируйте случай соответствия, заданный как разделенная разделенными запятой парами, состоящая из 'IgnoreCase'
и логический скаляр. Установите эту опцию равным 1 (true), чтобы соответствовать независимо от случая.
Пример: pat = regexpPattern('m.','IgnoreCase',true)
'Anchors'
- Метасимвол'text'
(по умолчанию) | 'line'
Метасимвол, заданное как разделенная разделенными запятой парами, состоящая из 'Anchors'
и одно из следующих значений:
Значение | Описание |
---|---|
'text' | Обработайте метасимволы ^ и $ как якоря к тексту. Это привязка регулярного выражения соответствует началу или концу текста, который может охватывать несколько линии. |
'line' | Обработайте метасимволы ^ и $ как линейные якоря. Это привязывает регулярное выражение, совпадающее с началом или концом линий в тексте. Эта опция используется, когда вы имеете многострочный текст и не хотите, чтобы совпадения охватывали несколько линии. |
Пример: pat = regexpPattern('\d+','Anchors','line')
pat
- Шаблон выраженияШаблон выражения, возвращенный как pattern
объект.
contains
| extract
| maskedPattern
| namedPattern
| pattern
| regexp
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.