说明我们有这段代码:
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'。
答案 0 :(得分:3)
要匹配以空格分隔的字符串开头的多个单词序列,可以使用
^(\w+(?:\s+\w+)*)\+
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+bb
和aa bb
中的aa bb+cc
。如果您只需要匹配2个以上的单词序列,请使用+
:
^(\w+(?:\s+\w+)+)\+