С R2016b года. Заменяет поиск и замену (R2016a).
Обработка текстовых данных часто включает нахождение и замену подстрок. Существует несколько функций, которые находят текст и возвращают разную информацию: одни функции подтверждают, что текст существует, в то время как другие подсчитывают вхождения, находят стартовые индексы или извлекают подстроки. Эти функции работают с векторами символов и строковыми скалярами, такими как "yes"
, а также символьные и строковые массивы, такие как ["yes"
, "no";"abc"
, "xyz"
]. В сложение можно использовать шаблоны для определения правил поиска, таких как один или несколько символов буквы или цифры.
Чтобы определить, присутствует ли текст, используйте функцию, которая возвращает логические значения, такие как contains
, startsWith
, или endsWith
. Логические значения 1
соответствуют true, и 0
соответствует false.
txt = "she sells seashells by the seashore"; TF = contains(txt,"sea")
TF = logical
1
Вычислим, сколько раз текст происходит с помощью count
функция.
n = count(txt,"sea")
n = 2
Чтобы найти, где находится текст, используйте strfind
функция, которая возвращает стартовые индексы.
idx = strfind(txt,"sea")
idx = 1×2
11 28
Поиск и извлечение текста с помощью функций извлечения, таких как extract
, extractBetween
, extractBefore
, или extractAfter
.
mid = extractBetween(txt,"sea","shore")
mid = "shells by the sea"
При необходимости включите текст границы.
mid = extractBetween(txt,"sea","shore","Boundaries","inclusive")
mid = "seashells by the seashore"
Функции поиска и замены могут также найти текст в многоэлементных массивах. Например, ищите названия цвета в нескольких заголовках песен.
songs = ["Yellow Submarine"; "Penny Lane"; "Blackbird"]; colors =["Red","Yellow","Blue","Black","White"]; TF = contains(songs,colors)
TF = 3x1 logical array
1
0
1
Чтобы перечислить песни, содержащие названия цвета, используйте логическую TF
массив как индексы в исходную songs
массив. Этот метод называется логическим индексированием.
colorful = songs(TF)
colorful = 2x1 string
"Yellow Submarine"
"Blackbird"
Используйте функцию replace
для замены текста в songs
который соответствует элементам colors
со строкой "Orange"
.
replace(songs,colors,"Orange")
ans = 3x1 string
"Orange Submarine"
"Penny Lane"
"Orangebird"
Начиная с R2020b
В сложение к поиску буквенного текста, таких как «sea» или «yellow», можно искать текст, соответствующий шаблону. Существует много предопределенных шаблонов, таких как digitsPattern
для поиска числовых цифр.
address = "123a Sesame Street, New York, NY 10128";
nums = extract(address,digitsPattern)
nums = 2x1 string
"123"
"10128"
Для дополнительной точности в поиске можно объединить шаблоны. Для примера найдите слова, которые начинаются с символа «S». Используйте строку, чтобы задать символ «S» и lettersPattern
чтобы найти дополнительные буквы после этого символа.
pat = "S" + lettersPattern;
StartWithS = extract(address,pat)
StartWithS = 2x1 string
"Sesame"
"Street"
Для получения дополнительной информации см. раздел «Построение Шаблона выражения».
contains
| count
| extract
| pattern
| replace
| strfind