regexptranslate

Переведите текст в регулярное выражение

Синтаксис

newStr = regexptranslate(op,str)

Описание

пример

newStr = regexptranslate(op,str) переводит str в регулярное выражение и возвращает результат в newStr. Можно использовать newStr в качестве регулярного выражения в regexp, regexpi и функциях regexprep. op входного параметра задает тип перевода, который выполняет regexptranslate. Например, если вы задаете op как 'escape', затем regexptranslate переводит специальные символы в str так, чтобы они были буквенными символами в выводе. newStr имеет совпадающий тип данных как str.

Примеры

свернуть все

Переведите специальный символ в векторе символа с помощью функции regexptranslate. Затем используйте результат в качестве регулярного выражения в regexp.

Создайте вектор символа, который содержит символы '\n'.

chr = 'The sequence \n generates a new line.'
chr = 
'The sequence \n generates a new line.'

Создайте регулярное выражение, которое находит '\n' как последовательность этих двух последовательных символов '\' и 'n'. Поскольку функция regexp интерпретирует '\n' как символ новой строки, используйте regexptranslate, чтобы создать регулярное выражение, чтобы выйти из '\n'.

pattern = regexptranslate('escape','\n')
pattern = 
'\\n'

Найдите начальное значение индекса '\n' в chr. Чтобы препятствовать тому, чтобы regexp интерпретировал '\n' как новую строку, используйте pattern в качестве регулярного выражения.

idx = regexp(chr,pattern)
idx = 14

Вызовите regexp, не выходя из '\n'. Поскольку regexp интерпретирует '\n' как новую строку, это не находит буквенные символы в chr. Функция regexp возвращает пустой массив, когда она не находит соответствие.

idx = regexp(chr,'\n')
idx =

     []

Создайте строку. Начиная в R2017a, можно создать строки с помощью двойных кавычек.

str = "Put your money in."
str = 
"Put your money in."

Задайте текст, '$0.02', как текст, чтобы заменить слово 'money'. Чтобы выйти из '$' и символов '.', используйте regexptranslate.

r = regexptranslate('escape','$0.02')
r = 
'\$0\.02'

Замените 'money' с помощью функции regexprep.

newStr = regexprep(str,'money',r)
newStr = 
"Put your $0.02 in."

Создайте массив строк, который содержит имена файлов. Затем найдите только имена файлов тем концом с '.mat'.

str = ["test1.mat","myfile.mat","my-matlab-script.m", ...
       "jan30.mat","table3.xls"]
str = 1x5 string array
  Columns 1 through 4

    "test1.mat"    "myfile.mat"    "my-matlab-script.m"    "jan30.mat"

  Column 5

    "table3.xls"

К строкам совпадения с регулярным выражением задайте '*.mat' как регулярное выражение. Затем переведите подстановочный символ, '*', с помощью функции regexptranslate.

pattern = regexptranslate('wildcard','*.mat')
pattern = 
'.*\.mat'

Найдите соответствие с элементами в str с помощью регулярного выражения, заданного pattern.

matches = regexp(str,pattern)
matches = 1x5 cell array
    {[1]}    {[1]}    {0x0 double}    {[1]}    {0x0 double}

Создайте логический массив, TF, который содержит 1, где соответствующие элементы str совпадали с pattern. Затем индексируйте в str с помощью TF, чтобы отобразить имена файлов тот конец с '.mat'.

tf = ~cellfun('isempty',matches);
newStr = str(tf)
newStr = 1x3 string array
    "test1.mat"    "myfile.mat"    "jan30.mat"

Создайте вектор символа, который содержит слова, разделенные пробельными символами, такими как пробелы и символы новой строки.

chr = 'Whose woods these are I think I know.';
chr = [chr newline 'His house is in the village though']
chr = 
    'Whose woods these are I think I know.
     His house is in the village though'

Задайте '\s' как регулярное выражение, которое совпадает с пробельными символами. Затем замените те символы в chr.

expression = '\s';
newChr = regexptranslate('flexible',chr,expression)
newChr = 
'Whose\swoods\sthese\sare\sI\sthink\sI\sknow.\sHis\shouse\sis\sin\sthe\svillage\sthough'

Входные параметры

свернуть все

Тип перевода, заданного как вектор символа или скаляр строки. Можно перевести специальные символы или подстановочные символы, или заменить текст на соответствующее регулярное выражение, с помощью опций в таблице.

Тип перевода

Описание

'escape'

Переведите все специальные символы в str, такие как '$', '.', '?', '[', так, чтобы они были обработаны как буквенные символы, когда используется в regexp, regexpi и regexprep. Перевод вставляет наклонную черту влево, или Escape, символ, '\', перед каждым специальным символом в str.

'wildcard'

Переведите весь подстановочный знак и символы '.' в str так, чтобы они были обработаны как литеральные подстановочные символы и периоды, когда используется в regexp, regexpi и regexprep. Перевод заменяет все экземпляры '*' с '.*', все экземпляры '?' с '.' и все экземпляры '.' с '\.'.

'flexible'

Замените текст в str с регулярным выражением, которое совпадает с текстом. Если вы задаете 'flexible', то также задают регулярное выражение, чтобы использовать в качестве замены: newStr = regexptranslate('flexible',str,expression). Входной параметр expression может быть вектором символа или представить скаляр в виде строки.

Этот синтаксис эквивалентен newStr = regexprep(str,expression,regexptranslate('escape',expression)).

Введите текст, заданный как вектор символа, массив ячеек из символьных векторов или массив строк.

Представлено до R2006a

Была ли эта тема полезной?