Замените текст с помощью регулярного выражения
заменяет текст в newStr
= regexprep(str
,expression
,replace
)str
который соответствует expression
с текстом, описанным replace
. The regexprep
функция возвращает обновленный текст в newStr
.
Если str
является одной частью текста (вектор символов или строковый скаляр), затем newStr
также является единым текстом того же типа. newStr
является единым фрагментом текста, даже когда expression
или replace
- массив ячеек из векторов символов или строковые массивы. Когда expression
- массив ячеек или строковые массивы, regexprep
применяет первое выражение к str
, и затем применяет каждое последующее выражение к предыдущему результату.
Если str
- массив ячеек или строковые массивы, затем newStr
- массив ячеек или строковые массивы с такими же размерностями, как str
. Для каждого элемента str
, regexprep
функция применяет каждое выражение последовательно.
Если нет совпадений, чтобы expression
, затем newStr
эквивалентно str
.
Замените слова, которые начинаются с M
, заканчивается на y
и иметь, по крайней мере, один символ между ними.
str = 'My flowers may bloom in May'; expression = 'M(\w+)y'; replace = 'April'; newStr = regexprep(str,expression,replace)
newStr = 'My flowers may bloom in April'
Замените изменения фразы 'walk up'
путем захвата букв, которые следуют 'walk'
в лексеме.
str = 'I walk up, they walked up, we are walking up.'; expression = 'walk(\w*) up'; replace = 'ascend$1'; newStr = regexprep(str,expression,replace)
newStr = 'I ascend, they ascended, we are ascending.'
Замените строчные буквы в начале предложений на их верхние эквиваленты с помощью upper
функция.
str = 'here are two sentences. neither is capitalized.'; expression = '(^|\.)\s*.'; replace = '${upper($0)}'; newStr = regexprep(str,expression,replace)
newStr = 'Here are two sentences. Neither is capitalized.'
Регулярное выражение совпадает с одинарными символами (.
), которые следуют за началом вектора символов (^)
или период (\.)
и любые пробелы (\s*)
. The replace
выражение вызывает upper
функция для совпадающего на данный момент символа ($0
).
Замените каждое вхождение двойной буквы в наборе векторов символов символами '--'
.
str = { ... 'Whose woods these are I think I know.' ; ... 'His house is in the village though;' ; ... 'He will not see me stopping here' ; ... 'To watch his woods fill up with snow.'}; expression = '(.)\1'; replace = '--'; newStr = regexprep(str,expression,replace)
newStr = 4x1 cell
{'Whose w--ds these are I think I know.'}
{'His house is in the vi--age though;' }
{'He wi-- not s-- me sto--ing here' }
{'To watch his w--ds fi-- up with snow.'}
Игнорируйте случай буквы в регулярном выражении при нахождении совпадений, но имитируйте случай буквы исходного текста при обновлении.
str = 'My flowers may bloom in May'; expression = 'M(\w+)y'; replace = 'April'; newStr = regexprep(str,expression,replace,'preservecase')
newStr = 'My flowers april bloom in April'
Вставка текста в начале вектора символов с помощью '^'
оператор, который возвращает соответствие нулевой длины, и 'emptymatch'
ключевое слово.
str = 'abc'; expression = '^'; replace = '__'; newStr = regexprep(str,expression,replace,'emptymatch')
newStr = '__abc'
str
- Текст для обновленияТекст для обновления, заданный как вектор символов, массив ячеек из векторов символов или строковые массивы.
Типы данных: char
| cell
| string
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
replace
- Текст заменыТекст замены, заданный как вектор символов, массив ячеек векторов символов или строковых массивов следующим образом:
Если replace
является единым вектором символов и expression
- массив ячеек из векторов символов, затем regexprep
использует один и тот же текст замены для каждого выражения.
Если replace
- массив ячеек из N
векторы символов и expression
является одним вектором символов, тогда regexprep
попытки N
совпадения и замены.
Если оба replace
и expression
являются массивами ячеек векторов символов, тогда они должны содержать одинаковое количество элементов. regexprep
пар каждый replace
элемент с совпадающим элементом в expression
.
Текст замены может включать обычные символы, специальные символы (такие как вкладки или новые линии) или операторы замены, как показано в следующих таблицах.
Оператор замены | Описание |
---|---|
| Фрагмент входного текста, которая в данный момент соответствует |
| Фрагмент входного текста, которая предшествует текущему соответствию |
| Фрагмент текста входа, который следует текущему соответствию (используйте |
|
|
| Именованная лексема |
| Выход возвращен, когда MATLAB выполняет команду, |
Оператор | Описание |
---|---|
| Предупреждение (звуковой сигнал) |
| Клавиша Backspace |
| Подача формы |
| Новая линия |
| Возврат каретки |
| Горизонтальная вкладка |
| Вертикальная вкладка |
| Любой символ со специальным смыслом в регулярных выражениях, которым вы хотите соответствовать буквально (для примера используйте |
Типы данных: char
| cell
| string
option
- Опция поиска или замены'once'
| N
| 'warnings'
| 'ignorecase'
| 'preservecase'
| 'emptymatch'
| 'dotexceptnewline'
| 'lineanchors'
| ...Опция поиска или замены, заданная как вектор символов или целое число значения, как показано в следующей таблице.
Опции приходят наборами: одна опция, которая соответствует поведению по умолчанию, и одна или две опции, которые позволяют вам переопределить значение по умолчанию. Задайте только одну опцию из набора. Опции могут появиться в любом порядке.
Дефолт |
Отвергнуть |
Описание |
---|---|---|
|
|
Совпадайте и заменяйте выражение как можно больше раз (по умолчанию), или только один раз. |
|
Замените только | |
|
|
Подавить предупреждения (по умолчанию) или отобразить их. |
|
|
Сопоставьте регистр буквы (по умолчанию) или проигнорируйте регистр во время соответствия и замены. |
|
Игнорируйте случай во время соответствия, но сохраняйте случай соответствующих символов в исходном тексте во время замены. | |
|
|
Игнорируйте совпадения нулевой длины (по умолчанию) или включите их. |
|
|
Сопоставьте точку с любым символом (по умолчанию) или со всеми, кроме newline ( |
|
| Применить |
|
|
Включать символы и комментарии при соответствии (по умолчанию) или игнорировать их. С |
Типы данных: char
| string
newStr
- Обновленный текстОбновленный текст, возвращенный как вектор символов, массив ячеек векторов символов или строковых массивов. Тип данных newStr
совпадает с типом данных str
.
Эта функция полностью поддерживает длинные массивы. Для получения дополнительной информации см. Раздел «Длинные массивы»
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.