exponenta event banner

regexptranslate

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

Описание

пример

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
  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=1×5 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
    "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