【问题标题】: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”应该匹配吗?

标签: javascript python regex


【解决方案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。但是效率并不是选择一种方法而不是另一种方法的有效标准。正则表达式对于它们的绝大多数用途来说足够快。
      猜你喜欢
      • 1970-01-01
      • 2016-01-14
      • 1970-01-01
      • 2017-02-06
      • 1970-01-01
      相关资源
      最近更新 更多