【问题标题】:how to detect a part of expression in a string in matlab如何在matlab中检测字符串中的一部分表达式
【发布时间】:2012-09-25 16:19:52
【问题描述】:

例如,我输入用户名v = ddd。然后我有一个字符串,名称,这种形状:

aaa.bbb.ccc.ddd.eee 

并且我想检测在我的字符串名称中是否存在(在点之间)这样的字符串,例如我的输入。我该怎么做?

我尝试了这个想法

str = 'REGEXP.helps.you.relax';
user = 'el'
[m s e] = regexp(str, '\w*user\w*', 'match', 'start', 'end')

但我得到错误,因为不能将变量'user' 这样放在正则表达式中。 我怎样才能正确地做到这一点?或者有没有更简单的想法?

谢谢!!

【问题讨论】:

  • el 真的是一个可以接受的匹配,还是不应该是help
  • @Jonas 为什么会这样?为什么不relax
  • @yoda:因为一旦找到匹配项,我就会停止解析。

标签: regex matlab text strcmp


【解决方案1】:

作为正则表达式的替代方法,您可以使用strfind,它在另一个字符串中查找一个字符串。它返回子字符串的起始索引(如果存在)和一个空矩阵向量。由于您只需要检查该字符串是否存在,因此一个简单的解决方案是:

~isempty(strfind(str,user))
% ans = 1

【讨论】:

  • 如果我想与一个 2x2 单元格中的一个单元格进行比较,例如 ~isempty(strfind(str,user(2,2))),怎么办……我明白了错误:如果任何输入参数是元胞数组,则第一个必须是字符串元胞数组,第二个必须是字符数组。
  • @user1578163 我不关注...你能用一个说明你的问题的例子来更新你的问题吗?
  • 问题是一样的。但尝试将其放入工作区:user{1,1} = 'al', user{1,2} = 'el', user{2,1} = 'ul', user{2,2} = 'ol '。如果我想将 user{1,2} 与字符串进行比较,你的答案不起作用,我得到一个错误。那我该怎么写呢?
  • @user1578163 cellfun(@(x)~isempty(strfind(str,x)),user)
【解决方案2】:

使用['\w*' user '\w*'] 作为您的第二个参数,它应该可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    • 2021-11-03
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多