假设我有这些字符串:
row - 1: First_s - end
row - 2: Second_s - end
...
row - 400: string_400 - end
我想使用matlab函数regexp
来选择:
和- end
之间的任何非白色字符。因此,在我的示例中,它将选择First_s Second_s string_400
等。适当的正则表达式是什么样的?
答案 0 :(得分:2)
不是前瞻和后瞻,而是匹配引导和追踪令牌的字符串:
>> Cs = regexp(strings,':\ (.*)\ - end','tokens');
>> Cs{1}{1}
ans =
'First_s'
>> Cs{2}{1}
ans =
'Second_s'
>> Cs{3}{1}
ans =
'string_400'
答案 1 :(得分:1)
使用严格的lookbehind和lookahead:(?<=: ).+?(?= - end)
。
答案 2 :(得分:1)
使用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'
答案 3 :(得分:0)
这是与ruby一起使用的正则表达式:row\s\-\s[\d]+\:\s(.*)\s-\send
,它可能也适用于matlab。
您可以在此处查看此示例的工作原理:http://rubular.com/r/FuPwNcBy1I