Шаблон, который совпадает с заданным регулярным выражением
создает шаблон, который совпадает с регулярным выражением.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 'characters'Создайте строку, содержащую newline символ. Используйте регулярное выражение '.' совпадать с любым символом кроме newline 'characters'.
txt = "First Line" + newline + "Second Line"
txt =
"First Line
Second Line"
expression = '.+';Регулярное выражение '.+' соответствия один или несколько из любого символа включая newline 'characters'. Рассчитайте, со сколько раз совпадает шаблон.
pat = regexpPattern(expression); count(txt,pat)
ans = 1
Создайте новый образец регулярного выражения, но на этот раз задайте DotExceptNewline как true так, чтобы шаблон не совпадал с newline 'characters'. Рассчитайте, со сколько раз совпадает шаблон.
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 'characters'.
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 или более раз последовательно. |
|
| По крайней мере {0,1} |
|
| По крайней мере {0,} |
|
| Точно Эквивалентный |
|
Кванторы могут появиться в трех режимах, описанных в следующей таблице. q представляет любой из кванторов в предыдущей таблице.
Режим | Описание | Пример |
|---|---|---|
| Жадное выражение: совпадайте с как можно большим количеством символов. | Учитывая текст |
| Ленивое выражение: совпадайте с таким же небольшим количеством символов по мере необходимости. | Учитывая text |
| Притяжательное выражение: соответствуйте как можно больше, но не повторно сканируйте фрагменты текста. | Учитывая text |
Группировка операторов
Группирующиеся операторы позволяют вам получать лексемы, применять один оператор к нескольким элементам или отключать отслеживание в обратном порядке в определенной группе. Лексемы являются фрагментами совпадающего текста, который вы задаете путем включения части регулярного выражения в круглых скобках.
Группировка оператора | Описание | Пример |
|---|---|---|
| Элементы группы выражения и лексем получения. |
|
| Группа, но не получают лексемы. |
Без группировки, |
| Сгруппируйтесь атомарно. Не отслеживайте в обратном порядке в группе, чтобы завершить соответствие и не получить лексемы. |
|
| Совпадайте с выражением Если существует соответствие с Можно включать |
|
Привязки
Привязки в выражении совпадают с началом или концом входного текста или слова.
Привязка | Соответствует... | Пример |
|---|---|---|
| Начало входного текста. |
|
| Конец входного текста. |
|
| Начало слова. |
|
| Конец слова. |
|
Утверждения Lookaround
Утверждения Lookaround ищут шаблоны, которые сразу предшествуют или следуют за намеченным соответствием, но не являются частью соответствия.
Указатель остается в текущем местоположении и символах, которые соответствуют test выражение не получено или отброшено. Поэтому предварительные утверждения могут совпадать с перекрывающимися группами символов.
Утверждение Lookaround | Описание | Пример |
|---|---|---|
| Предусмотрите для символов то соответствие |
|
| Смотрите вперед для символов, которые не совпадают |
|
| Оглянитесь для символов то соответствие |
|
| Оглянитесь для символов, которые не совпадают |
|
Если вы задаете предварительное утверждение, прежде чем выражение, операция будет эквивалентна логическому AND.
Операция | Описание | Пример |
|---|---|---|
| Совпадайте с обоими |
|
| Совпадайте |
|
Логические и условные операторы
Логические и условные операторы позволяют вам протестировать состояние данного условия, и затем использовать результат, чтобы определить который шаблон, если таковые имеются, соответствовать затем. Эти операторы поддерживают логический OR, и if или if/else условия.
Условиями могут быть лексемы, lookaround операторы или динамические выражения формы (?@cmd). Динамические выражения должны возвратить логическое или числовое значение.
Условный оператор | Описание | Пример |
|---|---|---|
| Совпадайте с выражением Если существует соответствие с |
|
| Если условие |
|
| Если условие |
|
Маркерные операторы
Лексемы являются фрагментами совпадающего текста, который вы задаете путем включения части регулярного выражения в круглых скобках. Можно обратиться к лексеме ее последовательностью в тексте (порядковая лексема) или присвоить имена к лексемам для более легкого обслуживания кода и читаемого выхода.
Порядковый маркерный оператор | Описание | Пример |
|---|---|---|
| Получите в лексеме символы, которые совпадают с заключенным в нихом выражение. |
|
Названный маркерный оператор | Описание | Пример |
|---|---|---|
| Получите в именованной лексеме символы, которые совпадают с заключенным в нихом выражение. |
|
Примечание
Если выражение вложило круглые скобки, MATLAB® получает лексемы, которые соответствуют наиболее удаленному набору круглых скобок. Например, учитывая поисковый шаблон '(and(y|rew))', MATLAB создает лексему для 'andrew' но не для 'y' или 'rew'.
Комментарии
'characters' | Описание | Пример |
|---|---|---|
(?#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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.