[英]How to match strings containing special string, but not containing another string with REGEXMATCH
我有一个基于 REGEXMATCH 的公式
=ArrayFormula(if( REGEXMATCH(topProdukte!AV2,"^si|si\\d+|si-"), topProdukte!AV2, "NO"))
现在我尝试添加一个 AND NOT 条件并在某些事情上失败。 我用负面的前瞻来尝试
=ArrayFormula(if( REGEXMATCH(topProdukte!AV2,"^(?!sia)si|si\\d+|si-"), topProdukte!AV2, "NO"))
按照https://stackoverflow.com/a 中的建议/3194881/1992004 - 但收到错误 #REF,不是有效的正则表达式。
最后,我需要匹配包含^si|si\\d+|si-
但不包含*sia*
字符串。
你需要做两件事:
REGEXMATCH
的要求sia
。所以,一个可能的解决方案是
=ArrayFormula(if( AND(NOT(REGEXMATCH(topProdukte!AV2, ".*sia.*")), REGEXMATCH(topProdukte!AV2,"^si.*|.*si\d.*|.*si-.*")), topProdukte!AV2, "NO"))
这里,
AND(...,...)
需要两个条件都通过/返回 trueNOT(REGEXMATCH(topProdukte!AV2, ".*sia.*"))
-确保的字符串中NOT
包含sia
(注意.*
两端确保整个字符串被消耗)REGEXMATCH(topProdukte!AV2,"^si.*|.*si\\d.*|.*si-.*")
-你已经拥有的部分:它匹配si
在字符串的开始, si
+数字或si-
字符串中的任何位置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.