Шаблон, соответствующий указанному регулярному выражению
создает образец, соответствующий регулярному выражению.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 представляет любой из количественных показателей в предыдущей таблице.
Способ | Описание | Пример |
|---|---|---|
| Жадное выражение: соответствует как можно большему количеству символов. | Учитывая текст |
| Ленивое выражение: соответствует необходимому количеству символов. | Учитывая текст |
| Притяжательное выражение: максимально совпадать, но не повторять какие-либо части текста. | Учитывая текст |
Группирование операторов
Операторы группировки позволяют захватывать маркеры, применять один оператор к нескольким элементам или отключать обратное отслеживание в определенной группе. Маркеры - это части совпадающего текста, определяемые путем включения части регулярного выражения в круглые скобки.
Оператор группировки | Описание | Пример |
|---|---|---|
| Группировка элементов выражения и маркеров захвата. |
|
| Группировать, но не захватывать токены. |
Без группировки, |
| Группировать атомарно. Не выполняйте обратную трассировку внутри группы для завершения сопоставления и не захватывайте токены. |
|
| Выражение соответствия При совпадении с Можно включить |
|
Якоря
Якоря в выражении соответствуют началу или концу входного текста или слова.
Якорь | Соответствует... | Пример |
|---|---|---|
| Начало входного текста. |
|
| Конец входного текста. |
|
| Начало слова. |
|
| Конец слова. |
|
Утверждения Lookaround
Утверждения lookaround ищут шаблоны, которые непосредственно предшествуют предполагаемому соответствию или следуют за ним, но не являются его частью.
Указатель остается в текущем местоположении, а символы соответствуют test выражения не захватываются и не отбрасываются. Поэтому утверждения lookahead могут совпадать с перекрывающимися группами символов.
Lookaround утверждение | Описание | Пример |
|---|---|---|
| Загляните вперед, чтобы найти совпадающие символы |
|
| Загляните вперед для символов, которые не совпадают |
|
| Искать совпадающие символы |
|
| Искать символы, которые не совпадают |
|
Если перед выражением указать утверждение 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'Metacharacter-обработка, указанная как пара, разделенная запятыми, состоящая из 'Anchors' и одно из этих значений:
| Стоимость | Описание |
|---|---|
'text' | Обработать метасимволы ^ и $ в качестве привязок к тексту. Это привязывает регулярное выражение к началу или концу текста, которое может охватывать несколько строк. |
'line' | Обработать метасимволы ^ и $ в качестве линейных якорей. Это привязывает регулярное выражение к началу или концу строк в тексте. Этот параметр полезен, если имеется многострочный текст и не требуется, чтобы совпадения охватывали несколько строк. |
Пример: pat = regexpPattern('\d+','Anchors','line')
pat - Выражение шаблонаВыражение шаблона, возвращаемое как pattern объект.
contains | extract | maskedPattern | namedPattern | pattern | regexp
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.