我们说我有这个字符串:S=hello !? how ?! are you ?!?! fine!?!?! thanks !?!?!? bye ?!?!?! bye !
我想使用正则表达式来提取字符串中!?
出现的次数
在这种情况下,它应该只是一个。
我怎样才能在Matlab中完成?
答案 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, '(?<!\!\?)\!\?(?!\!\?)'))