2014-02-14 19 views
0

比方说,我有这些字符串:适当的正则表达式来选择字符串中的文本?

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

事情是这样的@“:(+ ?)- 结束”; – FeliceM

回答

1

使用严格的后视和前瞻:(?<=:).+?(?= - end)

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' 
0

这里是红宝石工作正则表达式:row\s\-\s[\d]+\:\s(.*)\s-\send这将可能与MATLAB工作以及。

你可以看到这个例子,如何在这里工作:http://rubular.com/r/FuPwNcBy1I

2

而是向前看符号和lookbehinds的,你匹配导致的字符串和落后的标记:

>> Cs = regexp(strings,':\ (.*)\ - end','tokens'); 
>> Cs{1}{1} 
ans = 
    'First_s' 
>> Cs{2}{1} 
ans = 
    'Second_s' 
>> Cs{3}{1} 
ans = 
    'string_400' 
相关问题