如果正则表达式不包含特定单词,如何匹配它?

Posted

技术标签:

【中文标题】如果正则表达式不包含特定单词,如何匹配它?【英文标题】:How match a regex if it does not contain a particular word? 【发布时间】:2011-10-02 04:08:25 【问题描述】:

如果给定的字符串不只包含给定的单词(例如“any”),我想用 Python 或 javascript 编写一个正则表达式来匹配。

例如:

any:不匹配AnY:不匹配anyday:匹配any day:匹配blabla:匹配

【问题讨论】:

我认为您需要更多示例。例如“Foobar”应该匹配吗? 【参考方案1】:

类似这样的:

/(any)(.+)/i

【讨论】:

这仅匹配以“any”开头且至少有 4 个字符的单词。它不会匹配“blahblahblah”。 OP是否改变了你的问题?【参考方案2】:
any.+

..还有一些文字来设置 30char 阈值

【讨论】:

这仅匹配以“any”开头且至少有 4 个字符的单词。它不会匹配“blahblahblah” lol 匹配“blahblah”不是我回答时的要求:) 查看编辑历史记录【参考方案3】:

如果您还需要以“any”开头的单词,则可以使用否定前瞻

^(?!any$).*$

这将匹配除“any”之外的任何内容。

【讨论】:

【参考方案4】:

为此目的在 javascript 中使用 string.match(regexp) 方法。请看下面的代码:

<script type="text/javascript">
      var str="source string contains YourWord"; 
      var patt1=/YourWord/gi; // replace YourWord within this regex with the word you want to check.  
      if(str.match(patt1))
      
         //This means there is "YourWord" in the source string str. Do the required logic accordingly.
      
      else
      
          // no match
      
</script>

希望这会有所帮助...

【讨论】:

【参考方案5】:

不使用正则表达式可能更有效,这也有效:

def noAny(i):
    i = i.lower().replace('any', '')
    return len(i) > 0

【讨论】:

+1。但是效率并不是选择一种方法而不是另一种方法的有效标准。正则表达式对于它们的绝大多数用途来说足够快。

以上是关于如果正则表达式不包含特定单词,如何匹配它?的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式 - 匹配任何单词但忽略特定单词[重复]

如何使用正则表达式,将字符串中的每个单词首字母大写

正则表达式:\B 匹配不是单词开头或结束的位置

正则表达式匹配一定长度的单词

如何使用正则表达式匹配不以某些字符开头或结尾的单词?

如何使用正则表达式匹配nuxtjs,vue中路由中的特定单词?