繁体   English   中英

如何使用 REGEXMATCH 匹配包含特殊字符串但不包含另一个字符串的字符串

[英]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(...,...)需要两个条件都通过/返回 true
  • NOT(REGEXMATCH(topProdukte!AV2, ".*sia.*")) -确保的字符串中NOT包含sia (注意.*两端确保整个字符串被消耗)
  • REGEXMATCH(topProdukte!AV2,"^si.*|.*si\\d.*|.*si-.*") -你已经拥有的部分:它匹配si在字符串的开始, si +数字或si-字符串中的任何位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM