2012-01-21 3 views
2

Можно ли использовать соответствующие операторы or (|) в строках соответствия и подстановки подстановки регулярных выражений, так что список различных возможных совпадений заменяется соответствующим списком различных возможных совпадений строки замещения? Например,regex с соответствующими трубами в строке соответствия и замены

perl -e '$str="word1"; $str=~s/1/2/; print $str."\n"' 
    word2 
perl -e '$str="word3"; $str=~s/3/4/; print $str."\n"' 
    word4 

perl -e '$str="word1"; $str=~s/1|3/2|4/; print $str."\n"' 
    word2   (actual output: word2|4) 
perl -e '$str="word3"; $str=~s/1|3/2|4/; print $str."\n"' 
    word4   (actual output: word2|4) 

Последние два заявления дают фиктивный (по желанию) выход (реальный выход показаны в скобках).

+1

Я не достаточно хорошо знаком с Matlab, чтобы дать вам какой-либо надежный ответ, но пуля 3 может представлять интерес: http://www.mathworks.com/help/techdoc/ref/regexprep.html# f76-1152246 –

+0

Это не имеет смысла. Что именно вы делаете с первыми двумя, чтобы получить второе второе? – Phonon

+0

Спасибо @muistooshort. Кстати, ваши предложения на других языках были отличными. – user001

ответ

2

Кредиты перейти к пользователю mu слишком короткий.

Подстановка регулярных выражений с использованием нескольких совпадающих шаблонов ввода и выходных строк достигается в Matlab, как показано в следующем примере.

str_match = cell(2,1); str_match{1}='1'; str_match{2}='3'; 
str_sub = cell(2,1); str_sub{1}='2'; str_sub{2}='4'; 
regexprep('word1',str_match,str_sub) 
    ans = word2 
regexprep('word3',str_match,str_sub) 
    ans = word4 
Смежные вопросы