Заменить текст словами документов с использованием регулярного выражения
Text Analytics Toolbox™ предоставляет функции для общих шагов предварительной обработки текста. Например, чтобы удалить знаки препинания и символы, используйте erasePunctuation или для удаления стволовых слов с помощью stemmer Porter, normalizeWords. Дополнительные сведения см. в разделе Подготовка текстовых данных.
заменяет все вхождения регулярного выражения newDocuments = regexprep(documents,expression,replace)expression словами documents с текстом в replace.
Функция соответствует каждому слову независимо. Матч не обязательно должен охватывать все слово.
Заменить слова, начинающиеся с "s", конец "e", и иметь хотя бы один символ между ними. Для подбора целых слов используйте "^" для соответствия началу слова и "$" для соответствия концу слова.
documents = tokenizedDocument([ ... "an example of a short sentence" "a second short sentence"])
documents =
2x1 tokenizedDocument:
6 tokens: an example of a short sentence
4 tokens: a second short sentence
expression = "^s(\w+)e$"; replace = "thing"; newDocuments = regexprep(documents,expression,replace)
newDocuments =
2x1 tokenizedDocument:
6 tokens: an example of a short thing
4 tokens: a second short thing
Если вы не используете "^" и "$", то можно сопоставить подстроки слов. Заменить все гласные на «_.»
expression = "[aeiou]"; replace = "\_"; newDocuments = regexprep(documents,expression,replace)
newDocuments =
2x1 tokenizedDocument:
6 tokens: _n _x_mpl_ _f _ sh_rt s_nt_nc_
4 tokens: _ s_c_nd sh_rt s_nt_nc_
Заменить варианты слова "walk" путем захвата следующих букв "walk".
documents = tokenizedDocument([
"I walk"
"they walked"
"we are walking"])documents =
3x1 tokenizedDocument:
2 tokens: I walk
2 tokens: they walked
3 tokens: we are walking
expression = "walk(\w*)"; replace = "ascend$1"; newDocuments = regexprep(documents,expression,replace)
newDocuments =
3x1 tokenizedDocument:
2 tokens: I ascend
2 tokens: they ascended
3 tokens: we are ascending
documents - Исходные документыtokenizedDocument множествоИсходные документы, указанные как tokenizedDocument массив.
expression - Регулярное выражениеРегулярное выражение, указанное как символьный вектор, массив ячеек из символьных векторов или строковый массив. Каждое выражение может содержать символы, метасимволы, операторы, маркеры и флаги, определяющие шаблоны для сопоставления в str.
В следующих таблицах описаны элементы регулярных выражений.
Метазнаки
Метасимволы представляют собой буквы, диапазоны букв, цифры и символы пробела. Используйте их для построения обобщенного образца символов.
Метахарактер | Описание | Пример |
|---|---|---|
| Любой отдельный символ, включая пробел |
|
| Любой символ, заключенный в квадратные скобки. Следующие символы обрабатываются буквально: |
|
| Любой символ, не заключенный в квадратные скобки. Следующие символы обрабатываются буквально: |
|
| Любой символ в диапазоне |
|
| Любой алфавитный, цифровой или символ подчеркивания. Для английских наборов символов, |
|
| Любой символ, не являющийся алфавитным, цифровым или подчеркиванием. Для английских наборов символов, |
|
| Любой символ пробела; эквивалентно |
|
| Любой символ, отличный от пробела; эквивалентно |
|
| Любая цифровая цифра; эквивалентно |
|
| Любой неигрирующий персонаж; эквивалентно |
|
| Символ восьмеричного значения |
|
| Символ шестнадцатеричного значения |
|
Символьное представление
Оператор | Описание |
|---|---|
| Аварийный сигнал (звуковой сигнал) |
| Клавиша Backspace |
| Веб-канал формы |
| Новая линия |
| Возврат каретки |
| Горизонтальная вкладка |
| Вертикальная вкладка |
| Любой символ со специальным значением в регулярных выражениях, которые должны совпадать буквально (например, используйте |
Кванторы
Квантификаторы указывают, сколько раз шаблон должен присутствовать в соответствующем тексте.
Квантор | Число выполнений выражения | Пример |
|---|---|---|
| 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'.
Динамические регулярные выражения
Динамические выражения позволяют выполнять команду 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
newDocuments - Выходные документыtokenizedDocument множествоВыходные документы, возвращенные как tokenizedDocument массив.
Панель инструментов Text Analytics предоставляет функции для общих шагов предварительной обработки текста. Например, чтобы удалить знаки препинания и символы, используйте erasePunctuation или для удаления стволовых слов с помощью stemmer Porter, normalizeWords. Дополнительные сведения см. в разделе Подготовка текстовых данных.
decodeHTMLEntities | erasePunctuation | eraseTags | eraseURLs | normalizeWords | removeLongWords | removeShortWords | removeWords | replace | tokenizedDocument
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.