使用正则表达式在MATLAB中查找字符串连接空格

时间:2015-11-12 16:45:16

标签: regex matlab

说明我们有这段代码:

a = 'aa bb+cc';
start_part = regexp(a, '^(\w+)\+','tokens');

我希望'aa bb'作为输出使用和不使用[a-zA-Z0-9_ ]之类的结构。无论如何要做到这一点?

聚苯乙烯。 我们不知道+符号前第一句中的确切空格数。这只是一个例子。例如,我们可以'aa bb cc + dd'或'aa bb dd hh + mm'。

1 个答案:

答案 0 :(得分:3)

要匹配以空格分隔的字符串开头的多个单词序列,可以使用

^(\w+(?:\s+\w+)*)\+

请参阅regex demosample code

ax = 'aa bb ee gg+cc+dd';
start_part = regexp(ax, '^(\w+(?:\s+\w+)*)\+','tokens');
disp(start_part) 

结果:[1,1] = aa bb ee gg

这将匹配

  • ^ - 字符串的开头
  • (\w+(?:\s+\w+)*) - (捕获组1)匹配...
    • \w+ - 一个或多个字母数字符号
    • (?:\s+\w+)* - 0个或多个1个或更多个空格的序列,后跟1个或多个字母数字符号
  • \+ - 文字加符号

*量词可以匹配aa中的aa+bbaa bb中的aa bb+cc。如果您只需要匹配2个以上的单词序列,请使用+

^(\w+(?:\s+\w+)+)\+