比方说,我有这些字符串:适当的正则表达式来选择字符串中的文本?
row - 1: First_s - end
row - 2: Second_s - end
...
row - 400: string_400 - end
我想使用MATLAB函数regexp
选择的任何非空白字符是:
和- end
之间。所以在我的例子中,它会选择First_s Second_s string_400
等。一个合适的正则表达式是什么样的?
比方说,我有这些字符串:适当的正则表达式来选择字符串中的文本?
row - 1: First_s - end
row - 2: Second_s - end
...
row - 400: string_400 - end
我想使用MATLAB函数regexp
选择的任何非空白字符是:
和- end
之间。所以在我的例子中,它会选择First_s Second_s string_400
等。一个合适的正则表达式是什么样的?
使用严格的后视和前瞻:(?<=:).+?(?= - end)
。
用途regexprep
用什么来替代不需要的部分:
strings = {
'row - 1: First_s - end';
'row - 2: Second_s - end';
'row - 400: string_400 - end'}; %// example data. Assumed to be a cell array
strings = regexprep(strings,'.*:','') %// remove start
strings = regexprep(strings,'- end$','') %// remove end
strings = regexprep(strings,'\s','') %// remove spaces
在这个例子的结果是:
strings =
'First_s'
'Second_s'
'string_400'
这里是红宝石工作正则表达式:row\s\-\s[\d]+\:\s(.*)\s-\send
这将可能与MATLAB工作以及。
你可以看到这个例子,如何在这里工作:http://rubular.com/r/FuPwNcBy1I
而是向前看符号和lookbehinds的,你匹配导致的字符串和落后的标记:
>> Cs = regexp(strings,':\ (.*)\ - end','tokens');
>> Cs{1}{1}
ans =
'First_s'
>> Cs{2}{1}
ans =
'Second_s'
>> Cs{3}{1}
ans =
'string_400'
事情是这样的@“:(+ ?)- 结束”; – FeliceM