Совпадает с регулярным выражением (нечувствительный к регистру)
возвращает начальный индекс каждой подстроки startIndex = regexpi(str,expression)str который соответствует шаблонам символов, заданным регулярным выражением, независимо от буквы случая. Если нет спичек, startIndex - пустой массив.
[ возвращает начальный и конечный индексы всех совпадений.startIndex,endIndex]
= regexpi(str,expression)
возвращает выход, заданную как out = regexpi(str,expression,outkey)outkey. Для примера, если outkey является 'match', затем regexpi возвращает подстроки, которые соответствуют выражению, а не их начальным индексам.
[ возвращает выходы, заданные несколькими ключевыми словами выхода, в указанном порядке. Для примера, если вы задаете out1,...,outN]
= regexpi(str,expression,outkey1,...,outkeyN)'match', 'tokens', затем regexpi возвращает подстроки, которые совпадают со всем выражением, и лексемы, которые совпадают с частями выражения.
___ = regexpi(___,'forceCellOutput') возвращает каждый выходной аргумент в виде скалярной камеры. Камеры содержат числовые массивы или подстроки, которые описаны как выходы предыдущих синтаксисов. Можно включить любой из входов и запросить любой из выходов из предыдущих синтаксисов.
Найти слова, которые начинаются с c, заканчивается на t, и содержат одну или несколько гласных между ними.
str = 'bat cat can car COAT court cut ct CAT-scan'; expression = 'c[aeiou]+t'; startIndex = regexpi(str,expression)
startIndex = 1×4
5 17 28 35
Значения в startIndex указать индекс первого символа каждого слова, который совпадает с регулярным выражением.
Регулярное выражение 'c[aeiou]+t' задает этот шаблон:
c должен быть первым символом.
c должен содержать один из символов в скобках, [aeiou].
Шаблон в скобках должен происходить один или несколько раз, как обозначено + оператор.
t должен быть последним символом, без символов между шаблоном в скобках и t.
Сопоставьте регистр буквы во всем или части выражения.
По умолчанию regexpi выполняет аппроксимацию без учета регистра.
str = 'A character vector with UPPERCASE and lowercase text.'; expression = '\w*case'; matchStr = regexpi(str,expression,'match')
matchStr = 1x2 cell
{'UPPERCASE'} {'lowercase'}
Используйте regexp функция с тем же синтаксисом, что и regexpi для выполнения проверки соответствия с учетом регистра.
matchWithRegexp = regexp(str,expression,'match')matchWithRegexp = 1x1 cell array
{'lowercase'}
Чтобы отключить соответствие с учетом регистра для regexp, используйте 'ignorecase' опция.
matchWithIgnorecase = regexp(str,expression,'match','ignorecase')
matchWithIgnorecase = 1x2 cell
{'UPPERCASE'} {'lowercase'}
Для нескольких выражений включите и отключите сопоставление без регистра для выбранных выражений с помощью (?i) и (?-i) флаги поиска.
expression = {'(?-i)\w*case';...
'(?i)\w*case'};
matchStr = regexp(str,expression,'match');
celldisp(matchStr)
matchStr{1}{1} =
lowercase
matchStr{2}{1} =
UPPERCASE
matchStr{2}{2} =
lowercase
str - Входной текстВходной текст, заданный как вектор символов, массив ячеек из векторов символов или строковые массивы. Каждый вектор символов в массиве ячеек или каждая строка в строковых массивах могут иметь любую длину и содержать любые символы.
Если str и expression Строковые массивы или массивы ячеек, они должны иметь одинаковые размерности.
Типы данных: string | char | cell
expression - Регулярное выражениеРегулярное выражение, заданное как вектор символов, массив ячеек векторов символов или строковых массивов. Каждое выражение может содержать символы, метасимволы, операторы, лексемы и флаги, которые задают шаблоны, совпадающие с str.
В следующих таблицах описываются элементы регулярных выражений.
Метасимволы
Метасимволы представляют буквы, области значений букв, цифры и пробел символов. Используйте их, чтобы создать обобщенный шаблон символов.
Метасимвол | Описание | Пример |
|---|---|---|
| Любой один символ, включая пустое пространство |
|
| Любой символ, содержащийся в квадратных скобках. К следующим символам относятся буквально: |
|
| Любой символ, не содержащийся в квадратных скобках. К следующим символам относятся буквально: |
|
| Любой символ в области значений |
|
| Любой буквенный, числовой или символ подчеркивания. Для английских наборов символов, |
|
| Любой символ, который не является буквенным, числовым или подчеркивающим. Для английских наборов символов, |
|
| Любой символ белого пространства; эквивалентно |
|
| Любой непустой символ; эквивалентно |
|
| Любая числовая цифра; эквивалентно |
|
| Любой недигит символ; эквивалентно |
|
| Символ восьмеричного значения |
|
| Символ шестнадцатеричного значения |
|
Представление символов
Оператор | Описание |
|---|---|
| Предупреждение (звуковой сигнал) |
| Клавиша Backspace |
| Подача формы |
| Новая линия |
| Возврат каретки |
| Горизонтальная вкладка |
| Вертикальная вкладка |
| Любой символ со специальным смыслом в регулярных выражениях, которым вы хотите соответствовать буквально (для примера используйте |
Кванторы
Количественники задают количество раз, когда шаблон должен происходить в соответствующем тексте.
Квантор | Количество раз, когда происходит выражение | Пример |
|---|---|---|
| 0 или более раз последовательно. |
|
| 0 раз или 1 раз. |
|
| 1 или более раз последовательно. |
|
| По крайней мере
|
|
| По крайней мере
|
|
| Точно Эквивалентно |
|
Количественные значения могут появляться в трех режимах, описанных в следующей таблице. q представляет любой из количеств в предыдущей таблице.
Способ | Описание | Пример |
|---|---|---|
| Жадное выражение: соответствовать как можно большему количеству символов. | Учитывая текст |
| Ленивое выражение: соответствовать столько символов, сколько нужно. | Учитывая текст |
| Посессивное выражение: максимально совпадает, но не повторяет никаких фрагментов текста. | Учитывая текст |
Группировка операторов
Группирующие операторы позволяют вам захватывать лексемы, применять один оператор к нескольким элементам или отключать обратное отслеживание в определенной группе.
Группировка оператора | Описание | Пример |
|---|---|---|
| Группируйте элементы выражения и захватывайте лексемы. |
|
| Группируйте, но не захватывайте лексемы. |
Не группируя, |
| Группируйте атомарно. Не возвращайте данные в группу, чтобы завершить соответствие, и не захватывайте лексемы. |
|
| Совпадение выражений Если есть совпадение с Можно включать |
|
Якоря
Привязки в выражении совпадают с началом или концом входа текста или слова.
Якорь | Соответствует... | Пример |
|---|---|---|
| Начало входного текста. |
|
| Конец входного текста. |
|
| Начало слова. |
|
| Конец слова. |
|
Интерполяционные утверждения
Интерполяционные утверждения ищут шаблоны, которые непосредственно предшествуют или следуют предполагаемому соответствию, но не являются частью соответствия.
Указатель остается в текущем местоположении и символах, соответствующих test выражение не захватывается и не отбрасывается. Поэтому утверждения lookahead могут совпадать с перекрывающимися группами символов.
Интерполяционная заявка | Описание | Пример |
|---|---|---|
| Смотрите вперед для символов, которые совпадают |
|
| Смотрите вперед для символов, которые не совпадают |
|
| Следите за символами, которые совпадают |
|
| Просмотрите символы, которые не совпадают с |
|
Если вы задаете значения перед выражением, операция эквивалентна логической AND.
Операция | Описание | Пример |
|---|---|---|
| Соответствовать обоим |
|
| Совпадайте с |
|
Логические и условные операторы
Логические и условные операторы позволяют вам проверить состояние заданного условия, а затем использовать результат, чтобы определить, какой шаблон, если он есть, будет соответствовать следующему. Эти операторы поддерживают логические OR, и if или if/else условия.
Условия могут быть лексемами, интерполяционными операторами или динамическими выражениями формы (?@cmd). Динамические выражения должны возвращать логическое или числовое значение.
Условный оператор | Описание | Пример |
|---|---|---|
| Совпадение выражений Если есть совпадение с |
|
| Если условие |
|
| Если условие |
|
Операторы токенов
Лексемы являются фрагментами совпадающего текста, которые вы задаете, заключая часть регулярного выражения в круглые скобки. Вы можете обратиться к лексеме по его последовательности в тексте (порядковая лексема) или назначить имена лексем для более легкого обслуживания кода и читаемых выходов.
Оператор порядкового маркера | Описание | Пример |
|---|---|---|
| Захват в лексему символов, соответствующих вложенному выражению. |
|
| Соответствовать |
|
| Если на |
|
Оператор именованных маркеров | Описание | Пример |
|---|---|---|
| Захват в именованную лексему символов, соответствующих вложенному выражению. |
|
| Соответствовать лексеме, на которую ссылаются |
|
| Если именованная лексема найдена, то совпадайте с |
|
Примечание
Если выражение имеет вложенные круглые скобки, MATLAB® захватывает лексемы, которые соответствуют крайнему набору круглых скобок. Для примера, учитывая шаблон поиска '(and(y|rew))'MATLAB создает лексему для 'andrew' но не для 'y' или 'rew'.
Динамические регулярные выражения
Динамические выражения позволяют вам выполнить команду MATLAB или регулярное выражение, чтобы определить текст, который будет совпадать.
Круглые скобки, заключающие динамические выражения, не создают группу захвата.
Оператор | Описание | Пример |
|---|---|---|
| Синтаксический анализ При анализе |
|
| Выполните команду MATLAB, представленную |
|
| Выполните команду MATLAB, представленную |
|
В динамических выражениях для определения текста замены используйте следующие операторы.
Оператор замены | Описание |
|---|---|
| Фрагмент входного текста, которая в данный момент соответствует |
| Фрагмент входного текста, которая предшествует текущему соответствию |
| Фрагмент текста входа, который следует текущему соответствию (используйте |
|
|
| Именованная лексема |
| Выход возвращен, когда MATLAB выполняет команду, |
Комментарии
Персонажи | Описание | Пример |
|---|---|---|
(?#comment) | Вставьте комментарий в регулярное выражение. Текст комментария игнорируется при совпадении с входами. |
|
Флаги поиска
Флаги поиска изменяют поведение для совпадающих выражений. Альтернативой использованию флага поиска в выражении является передача option входной параметр.
Флаг | Описание |
|---|---|
(?-i) | Сопоставьте случай буквы (по умолчанию для |
(?i) | Не совпадайте буква случаем (по умолчанию для |
(?s) | Совпадайте с точкой ( |
(?-s) | Сопоставьте точку в шаблоне с любым символом, который не является символом новой строки. |
(?-m) | Соответствовать |
(?m) | Соответствовать |
(?-x) | Включите символы и комментарии при совпадении (по умолчанию). |
(?x) | Игнорируйте символы и комментарии при совпадении. Использование |
Выражение, которое изменяет флаг, может появиться либо после круглых скобок, таких как
(?i)\w*
или внутри круглых скобок и отделенных от флага двоеточием (:), такие как
(?i:\w*)
Последний синтаксис позволяет изменять поведение на часть большего выражения.
Типы данных: char | cell | string
outkey - Ключевое слово, которое указывает, какие выходы возвращать'start' (по умолчанию) | 'end' | 'tokenExtents' | 'match' | 'tokens' | 'names' | 'split'Ключевое слово, которое указывает, какие выходы возвращать, заданное как один из следующих векторов символов.
Ключевое слово выхода | Возвраты |
|---|---|
| Стартовые индексы всех совпадений, |
| Конечные индексы всех матчей, |
| Стартовый и конечный индексы всех лексем |
| Текст каждой подстроки, которая соответствует шаблону в |
| Текст каждого захваченной лексемы в |
| Имя и текст каждого именованной лексемы |
| Текст несоответствующих подстрок |
Типы данных: char | string
option - Опция поиска'once' | 'warnings' | 'matchcase' | 'emptymatch' | 'dotexceptnewline' | 'lineanchors' | ...Опция поиска, заданная как вектор символов. Опции приходят парами: одна опция, которая соответствует поведению по умолчанию, и одна опция, которая позволяет вам переопределить значение по умолчанию. Задайте только одну опцию из пары. Опции могут появиться в любом порядке.
|
Дефолт |
Отвергнуть |
Описание |
|---|---|---|
|
|
|
Совпадайте с выражением как можно больше раз (по умолчанию) или только один раз. |
|
|
|
Подавить предупреждения (по умолчанию) или отобразить их. |
|
|
|
Игнорируйте букву случай (по умолчанию) или соответствующий случай. |
|
|
|
Игнорируйте совпадения нулевой длины (по умолчанию) или включите их. |
|
|
|
Сопоставьте точку с любым символом (по умолчанию) или со всеми, кроме newline ( |
|
|
| Применить |
|
|
|
Включать символы и комментарии при соответствии (по умолчанию) или игнорировать их. С |
Типы данных: char
startIndex - Стартовый индекс каждого совпаденияСтартовые индексы каждого соответствия, возвращенные как вектор-строка или массив ячеек, следующим образом:
Если str и expression являются векторами символов или строковыми скалярами, вывод представляет собой вектор-строку (или, если нет совпадений, пустой массив).
Если либо str или expression - массив ячеек из векторов символов или строковых массивов, а другой - вектор символов или строковый скаляр, выход - массив ячеек из векторов-строк. Выход массива ячеек имеет те же размерности что и вход массив.
Если str и expression являются массивами ячеек или строковыми массивами, они должны иметь одинаковые размерности. Выходы - массив ячеек с одинаковыми размерностями.
endIndex - Конечный индекс каждого совпаденияКонечный индекс каждого соответствия, возвращаемый как вектор-строка или массив ячеек, следующим образом:
Если str и expression являются векторами символов или строковыми скалярами, вывод представляет собой вектор-строку (или, если нет совпадений, пустой массив).
Если либо str или expression - массив ячеек из векторов символов или строковых массивов, а другой - вектор символов или строковый скаляр, выход - массив ячеек из векторов-строк. Выход массива ячеек имеет те же размерности что и вход массив.
Если str и expression являются массивами ячеек или строковыми массивами, они должны иметь одинаковые размерности. Выходы - массив ячеек с одинаковыми размерностями.
out - Информация о спичкахСведения о соответствии, возвращенные в виде числа, камеры, строки или массива структур. Информация в выходе зависит от значения, которое вы задаете для outkey, следующим образом.
Ключевое слово выхода | Выход | Тип и размерности выхода |
|---|---|---|
| Стартовые индексы совпадений | Для обоих
|
| Конечные индексы совпадений | |
| Стартовый и конечный индексы всех лексем | По умолчанию при возвращении всех матчей:
Когда вы задаете Если лексема ожидается с заданным индексом |
| Текст каждой подстроки, которая соответствует шаблону в | По умолчанию при возвращении всех матчей:
Когда вы задаете |
| Текст каждого захваченной лексемы в | По умолчанию при возвращении всех матчей:
Когда вы задаете Если лексема ожидается с конкретным индексом, но не найден, MATLAB возвращает пустое значение для лексемы, |
| Имя и текст каждого именованной лексемы | Для всех матчей:
|
| Текст несоответствующих подстрок | Для всех матчей:
|
Лексемы являются фрагментами совпадающего текста, которые соответствуют фрагментам регулярного выражения. Чтобы создать лексемы, заключайте часть регулярного выражения в круглые скобки.
Для примера это выражение находит дату формы dd-mmm-yyyy, включая лексемы за день, месяц и год.
str = 'Here is a date: 01-Apr-2020'; expression = '(\d+)-(\w+)-(\d+)'; mydate = regexp(str,expression,'tokens'); mydate{:}
ans =
1×3 cell array
{'01'} {'Apr'} {'2020'}
Вы можете связать имена с лексемами, чтобы они легче идентифицировались:
str = 'Here is a date: 01-Apr-2020'; expression = '(?<day>\d+)-(?<month>\w+)-(?<year>\d+)'; mydate = regexp(str,expression,'names')
mydate =
struct with fields:
day: '01'
month: 'Apr'
year: '2020'
Для получения дополнительной информации см. лексемы в регулярных выражениях».
contains | regexp | regexprep | regexptranslate | replace | strfind | strjoin | strrep | strsplit
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
Вы щелкнули по ссылке, которая соответствует команде MATLAB:
Выполните эту команду, введя её в командном окне MATLAB.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.