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