Поиск и замена текста

С 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"

Для получения дополнительной информации см. раздел «Построение Шаблона выражения».

См. также

| | | | |

Похожие темы