regexpPattern

Шаблон, который совпадает с заданным регулярным выражением

Описание

пример

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 '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"

Входные параметры

свернуть все

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

Следующие таблицы описывают элементы регулярных выражений.

Метасимволы

Метасимволы представляют буквы, обозначают буквами области значений, цифры и пробелы. Используйте их, чтобы создать обобщенный шаблон символов.

Метасимвол

Описание

Пример

.

Любой отдельный символ, включая пробел

'..ain' последовательности соответствий пяти последовательных символов тот конец с 'ain'.

[c1c2c3]

Любой символ содержится в квадратных скобках. Следующие символы обработаны буквально: $ | . * + ? и - если не используемый, чтобы указать на область значений.

'[rp.]ain' соответствия 'rain' или 'pain' или '.ain'.

[^c1c2c3]

Любой символ, не содержавший в квадратных скобках. Следующие символы обработаны буквально: $ | . * + ? и - если не используемый, чтобы указать на область значений.

'[^*rp]ain' соответствия все последовательности с четырьмя буквами тот конец в 'ain', кроме 'rain' и 'pain' и '*ain'. Например, это совпадает с 'gain', 'lain', или 'vain'.

[c1-c2]

Любой символ в области значений c1 через c2

'[A-G]' совпадает с отдельным символом в области значений A через G.

\w

Любой алфавитный, числовой, или символ подчеркивания. Для английских наборов символов, \w эквивалентно [a-zA-Z_0-9]

'\w*' идентифицирует слово, состоявшее из любой группировки алфавитных, числовых, или символов подчеркивания.

\W

Любой символ, который не является алфавитным, числовым, или подчеркивание. Для английских наборов символов, \W эквивалентно [^a-zA-Z_0-9]

'\W*' идентифицирует термин, который не является словом, состоявшим ни из какой группировки алфавитных, числовых, или символов подчеркивания.

\s

Любой пробельный символ; эквивалентный [ \f\n\r\t\v]

'\w*n\s' распознает слова, которые заканчивают буквой n, сопровождаемый пробельным символом.

\S

Любой непробельный символ; эквивалентный [^ \f\n\r\t\v]

'\d\S' совпадает с числовой цифрой, сопровождаемой любым непробельным символом.

\d

Любая числовая цифра; эквивалентный [0-9]

'\d*' соответствия любое количество последовательных цифр.

\D

Любой символ нецифры; эквивалентный [^0-9]

'\w*\D\>' распознает слова, которые не заканчиваются числовой цифрой.

\oN или \o{N}

Символ восьмеричного значения N

'\o{40}' совпадает с пробелом, заданным восьмеричным 40.

\xN или \x{N}

Символ шестнадцатеричного значения N

'\x2C' совпадает с символом запятой, заданным шестнадцатеричным 2C.

Символьное представление

Оператор

Описание

\a

Предупреждение (звуковой сигнал)

\b

Клавиша Backspace

\f

Перевод формата

\n

Новая строка

\r

Возврат каретки

\t

Горизонтальная табуляция

\v

Вертикальная табуляция

'char'

Любой символ с особым значением в регулярных выражениях, с которыми вы хотите совпадать буквально (например, используйте \\ совпадать с одной обратной косой чертой)

Кванторы

Кванторы задают число раз, шаблон должен произойти в совпавшем тексте. expr представляет любое регулярное выражение.

Квантор

Выражение числа раз происходит

Пример

expr*

0 или больше раз последовательно.

'\w*' распознает слово любой длины.

expr?

0 раз или в 1 раз.

'\w*(\.m)?' распознает слова, которые опционально заканчиваются дополнительным .m.

expr+

1 или более раз последовательно.

'<img src="\w+\.gif">' совпадает с <img> HTML-тэг, когда имя файла содержит один или несколько символов.

expr{m,n}

По крайней мере, m времена, но не больше, чем n времена последовательно.

{0,1} эквивалентно ?.

'\S{4,8}' соответствия между четырьмя и восемью непробельными символами.

expr{m,}

По крайней мере, m времена последовательно.

{0,} и {1,} эквивалентны * и +, соответственно.

'<a href="\w{1,}\.html">' совпадает с <a> HTML-тэг, когда имя файла содержит один или несколько символов.

expr{n}

Точно n времена последовательно.

Эквивалентный {n,n}.

'\d{4}' соответствия четыре последовательных цифры.

Кванторы могут появиться в трех режимах, описанных в следующей таблице. q представляет любой из кванторов в предыдущей таблице.

Режим

Описание

Пример

exprq

Жадное выражение: совпадайте с как можно большим количеством символов.

Учитывая текст '<tr><td><p>text</p></td>', выражение '</?t.*>' соответствия все символы между <tr и /td>:

'<tr><td><p>text</p></td>'

exprq?

Ленивое выражение: совпадайте с таким же небольшим количеством символов по мере необходимости.

Учитывая text'<tr><td><p>text</p></td>', выражение '</?t.*?>' заканчивает каждый матч при первом вхождении закрывающей угловой скобки (>):

'<tr>'   '<td>'   '</td>'

exprq +

Притяжательное выражение: соответствуйте как можно больше, но не повторно сканируйте фрагменты текста.

Учитывая text'<tr><td><p>text</p></td>', выражение '</?t.*+>' не возвращает соответствий, потому что закрывающая угловая скобка получена с помощью .*, и не повторно сканируется.

Группировка операторов

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

Группировка оператора

Описание

Пример

(expr)

Элементы группы выражения и лексем получения.

'Joh?n\s(\w*)' получает лексему, которая содержит фамилию любого человека с именем John или Jon.

(?:expr)

Группа, но не получают лексемы.

'(?:[aeiou][^aeiou]){2}' соответствия два последовательных шаблона гласного, сопровождаемого негласным, такие как 'anon'.

Без группировки, '[aeiou][^aeiou]{2}'совпадает с гласным, сопровождаемым двумя негласными.

(?>expr)

Сгруппируйтесь атомарно. Не отслеживайте в обратном порядке в группе, чтобы завершить соответствие и не получить лексемы.

'A(?>.*)Z' не совпадает с 'AtoZ', несмотря на то, что 'A(?:.*)Z' делает. Используя атомарную группу, Z получен с помощью .* и не повторно сканируется.

(expr1|expr2)

Совпадайте с выражением expr1 или выражение expr2.

Если существует соответствие с expr1, затем expr2 проигнорирован.

Можно включать ?: или ?> после вводной круглой скобки, чтобы подавить лексемы или группу атомарно.

'(let|tel)\w+' распознает слова, которые запускаются с let или tel.

Привязки

Привязки в выражении совпадают с началом или концом входного текста или слова.

Привязка

Соответствует...

Пример

^expr

Начало входного текста.

'^M\w*' распознает слово начиная с M в начале текста.

expr$

Конец входного текста.

'\w*m$' слова соответствий, заканчивающиеся m в конце текста.

\<expr

Начало слова.

'\<n\w*' распознает любые слова начиная с n.

expr\>

Конец слова.

'\w*e\>' соответствия любые слова, заканчивающиеся e.

Утверждения Lookaround

Утверждения Lookaround ищут шаблоны, которые сразу предшествуют или следуют за намеченным соответствием, но не являются частью соответствия.

Указатель остается в текущем местоположении и символах, которые соответствуют test выражение не получено или отброшено. Поэтому предварительные утверждения могут совпадать с перекрывающимися группами символов.

Утверждение Lookaround

Описание

Пример

expr)?test)

Предусмотрите для символов то соответствие test.

'\w*(?=ing)' условия соответствий, которые сопровождаются ing, такой как 'Fly' и 'fall' во входном тексте 'Flying, not falling.'

expr)?!)

Смотрите вперед для символов, которые не совпадают с test.

'i(?!ng)' экземпляры соответствий буквы i это не сопровождается ng.

(? <=testexpr)

Оглянитесь для символов то соответствие test.

'(?<=re)\w*' условия соответствий, которые следуют за 're', такой как 'new'Использование, и 'cycle' во входном тексте 'renew, reuse, recycle'

(? <! testexpr)

Оглянитесь для символов, которые не совпадают с test.

'(?<!\d)(\d)(?!\d)' совпадает с одноразрядными числами (цифры, которые не предшествуют или следуют за другими цифрами).

Если вы задаете предварительное утверждение, прежде чем выражение, операция будет эквивалентна логическому AND.

Операция

Описание

Пример

(? =testexpr)

Совпадайте с обоими test и expr.

'(?=[a-z])[^aeiou]' согласные соответствий.

Тестexpr)

Совпадайте с expr и не совпадайте с test.

'(?![aeiou])[a-z]' согласные соответствий.

Логические и условные операторы

Логические и условные операторы позволяют вам протестировать состояние данного условия, и затем использовать результат, чтобы определить который шаблон, если таковые имеются, соответствовать затем. Эти операторы поддерживают логический OR, и if или if/else условия.

Условиями могут быть лексемы, lookaround операторы или динамические выражения формы (?@cmd). Динамические выражения должны возвратить логическое или числовое значение.

Условный оператор

Описание

Пример

expr1|expr2

Совпадайте с выражением expr1 или выражение expr2.

Если существует соответствие с expr1, затем expr2 проигнорирован.

'(let|tel)\w+' распознает слова, которые запускаются с let или tel.

(?(cond)expr)

Если условие cond true, затем совпадайте с expr.

'(?(?@ispc)[A-Z]:\\)' совпадает с именем дисковода, таким как C:\, когда работается система Windows®.

(?(cond)expr1|expr2)

Если условие cond true, затем совпадайте с expr1. В противном случае совпадайте с expr2.

'Mr(s?)\..*?(?(1)her|his) \w*' текст соответствий, который включает her когда текст начинается с Mrs, или это включает his когда текст начинается с Mr.

Маркерные операторы

Лексемы являются фрагментами совпадающего текста, который вы задаете путем включения части регулярного выражения в круглых скобках. Можно обратиться к лексеме ее последовательностью в тексте (порядковая лексема) или присвоить имена к лексемам для более легкого обслуживания кода и читаемого выхода.

Порядковый маркерный оператор

Описание

Пример

(expr)

Получите в лексеме символы, которые совпадают с заключенным в нихом выражение.

'Joh?n\s(\w*)' получает лексему, которая содержит фамилию любого человека с именем John или Jon.

Названный маркерный оператор

Описание

Пример

(?<name>expr)

Получите в именованной лексеме символы, которые совпадают с заключенным в нихом выражение.

'(?<month>\d+)-(?<day>\d+)-(?<yr>\d+)' создает названные лексемы в течение месяца, дня и года на входной дате формы mm-dd-yy.

Примечание

Если выражение вложило круглые скобки, MATLAB® получает лексемы, которые соответствуют наиболее удаленному набору круглых скобок. Например, учитывая поисковый шаблон '(and(y|rew))', MATLAB создает лексему для 'andrew' но не для 'y' или 'rew'.

Комментарии

'characters'

Описание

Пример

(?#comment)

Вставьте комментарий в регулярное выражение. Текст комментария проигнорирован при соответствии с входом.

'(?# Initial digit)\<\d\w+' включает комментарий и распознает слова, которые начинаются с номера.

Поисковые флаги

Поисковые флаги изменяют поведение для соответствия с выражениями. Альтернатива использованию поискового флага в рамках выражения должна передать option входной параметр.

Флаг

Описание

(?-i)

Совпадайте с регистром (значение по умолчанию для regexp и regexprep).

(?i)

Не совпадайте с регистром (значение по умолчанию для regexpi).

(?s)

Точка соответствия (.) в шаблоне с любым символом (значение по умолчанию).

(?-s)

Точка соответствия в шаблоне с любым символом, который не является символом новой строки.

(?-m)

Совпадайте с ^ и $ метасимволы вначале и конец текста (значение по умолчанию).

(?m)

Совпадайте с ^ и $ метасимволы вначале и конец линии.

(?-x)

Включайте пробелы и комментарии при соответствии (значение по умолчанию).

(?x)

Проигнорируйте пробелы и комментарии при соответствии. Использование и '\#' совпадать с пробелом и # 'characters'.

Выражение, которое изменяет флаг, может появиться любой после круглых скобок, такой как

(?i)\w*

или в круглых скобках и разделенный от флага с двоеточием (:), такой как

(?i:\w*)

Последний синтаксис позволяет вам изменять поведение для части большего выражения.

Типы данных: char | cell | string

Примечание

regexpPattern не поддерживает обратные ссылки, условия на основе обратных ссылок и динамические регулярные выражения.

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'DotExceptNewline',true,'FreeSpacing',false

Точка, соответствующая newline символ в виде разделенной запятой пары, состоящей из 'DotExceptNewline' и логический скаляр. Установите эту опцию на 0 (FALSE) не использовать newline символы от точечного соответствия.

Пример: pat = regexpPattern('m.','DotExceptNewline',true)

Соответствие с пробельным символом в виде разделенной запятой пары, состоящей из 'FreeSpacing' и логический скаляр. Установите эту опцию на 1 (TRUE) не использовать пробельные символы и комментарии при соответствии.

Пример: pat = regexpPattern('m.','FreeSpacing',false)

Игнорируйте регистр при соответствии в виде разделенной запятой пары, состоящей из 'IgnoreCase' и логический скаляр. Установите эту опцию на 1 (TRUE) соответствовать независимо от случая.

Пример: pat = regexpPattern('m.','IgnoreCase',true)

Обработка метасимвола в виде разделенной запятой пары, состоящей из 'Anchors' и одно из этих значений:

ЗначениеОписание
'text'Обработайте метасимволы ^ и $ как текстовые привязки. Это регулярное выражение привязок соответствует к началу или концу текста, который может охватить несколько линий.
'line'Обработайте метасимволы ^ и $ как привязки к линии. Это регулярное выражение привязок соответствует к началу или концу линий в тексте. Эта опция полезна, когда вы имеете многострочный текст и не хотите, чтобы соответствия охватили несколько линий.

Пример: pat = regexpPattern('\d+','Anchors','line')

Выходные аргументы

свернуть все

Выражение шаблона, возвращенное как pattern объект.

Введенный в R2020b