我一直试图在最近几天解决这个问题但没有成功。我有以下字符串:
comment = '#disabled, Fc = 200Hz'
我需要做的是:如果有字符串'disabled'
则需要匹配。否则,我需要匹配'Hz'
之前的数字。
我到目前为止找到的最接近的解决方案是:
regexpi(comment,'\<#disabled\>|\w*Hz\>','match') ;
它会匹配单词'#disabled'
或'Hz'
之前的任何内容。问题是,当它第一次找到'#disabled#'
时,它也会复制结果'200Hz'
。
所以我得到了:
ans = '#disabled' '200Hz'
总结一下,我需要只选择一个字符串的'disabled'
部分,否则我需要在'Hz'
之前得到该数字。
有人可以帮我一把吗?
答案 0 :(得分:5)
假设您的输入是:
comment = {'#disabled, Fc = 200Hz';
'Fc = 300Hz'}
正则表达式(如果跟随#
,则匹配禁用,否则匹配数字,如果它们后跟Hz
):
regexp(comment, '(?<=^#)disabled|\d+(?=Hz)','match','once')
解释:
^#
- 在该行的开头匹配#
(?<=expr)disabled
- 匹配disabled
如果跟随expr
expr1 | expr2
- 否则匹配expr2
\d+
- 匹配1位或更多位数,相当于[0-9]+
expr(?=Hz)
- 仅在expr
'Hz'
匹配
图: