2

以下是要匹配的示例字符串列表:

  • 这些应该匹配:

    hello.js
    test.hello.js
    test.js.js
    test.js.hello.js
    test.js.test.js.test.js.dss.js
    test.js.dss.js
    test.js.js.js.js.dummy.js
    
  • 这些不应该匹配:

    fun.css
    test.js
    fun.test.js
    test.test.js
    test.js.test.js
    hell.cs
    test.test.js
    
4

2 回答 2

3

一个简单的选择是使用否定的前瞻来检查该行是否以 结尾.test.js

^(?!.*\.test\.js$).*\.js$

那个不包括test.js,这是一种特殊情况,但您可以使用^(?!(?:^|.*\.)test\.js$).*\.js$它来绕过它(或其他类似选项)。

工作示例:http ://www.rubular.com/r/UVvRZMcnjl

如果您的风格支持lookbehinds(JavaScript 和旧的 Ruby 不支持,但 Ruby 1.9.2 支持),您可以使用:

^.*(?<!^test|\.test)\.js$

工作示例:http ://www.rubular.com/r/lBCphNYEeS

于 2012-05-25T15:56:03.753 回答
2

由于问题标签已从更改为​​ ,因此请使用简单的lookbehind:

.*(?<!test).js$

在此处查看实际操作:http ://rubular.com/r/yVH2xfsRqw

于 2012-05-25T15:45:57.550 回答