Шаблон, соответствующий заданному регулярному выражению
создает шаблон, соответствующий регулярному выражению.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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.