提取字符串中`!?`的出现次数

时间:2014-12-08 21:56:58

标签: regex string matlab

我们说我有这个字符串:S=hello !? how ?! are you ?!?! fine!?!?! thanks !?!?!? bye ?!?!?! bye !

我想使用正则表达式来提取字符串中!?出现的次数 在这种情况下,它应该只是一个。

我怎样才能在Matlab中完成?

2 个答案:

答案 0 :(得分:1)

正则表达式

\s(!\?)\s

将比赛捕获到!?由空格分隔。示例字符串中只有一个。现在,我不知道如何在Matlab中做到这一点,但它应该像在字符串中获取正则表达式的匹配,并得到返回列表的长度

Matlab代码应该是这样的:

str = 'hello !? how ?! are you ?!?! fine!?!?! thanks !?!?!? bye ?!?!?! bye !';
expression = '\s(!\?)\s';
matchStr = regexp(str, expression, 'match')
length(matchStr)

答案 1 :(得分:0)

将您的字符串定义为

S = 'hello !? how are you !?!? fine !?!?!?';

要计算'!?的发生次数,请使用其中任何一种

numel(regexp(S, '\!\?'))
numel(strfind(S, '!?'))

要计算'!?而非'!?!?等,您需要在正则表达式中添加lookaround assertions,以确保所请求的'!?'不在其他之前或之后'!?'

numel(regexp(S, '(?<!\!\?)\!\?(?!\!\?)'))