代码之家  ›  专栏  ›  技术社区  ›  Joshua

有关特定正则表达式的帮助-不包含某些字符串

  •  5
  • Joshua  · 技术社区  · 14 年前

    我怎么说呢,在正则表达式中:


    " _ " (空格下划线空格),并以字符串“!!!”(没有引号)?

    我对“不包含”的部分有问题。

    以下是我目前掌握的情况:

    [A-Z].* .*!!!
    

    它不需要是特定的字符串“\u”。我怎么能说“不包含”任何字符串?例如不包含“狗”?

    编辑 :我希望解决方案与Php的“preg_replace”兼容

    编辑 :示例:

    Abc xyz!!!<---匹配

    你好,世界!!!<---匹配

    “狗”的例子:

    真是只狗!!!<---不匹配(包含“dog”)

    7 回复  |  直到 14 年前
        1
  •  2
  •   atomizer    14 年前

    这个 x(?!y) 表达式匹配 x 只有在它后面没有紧跟着 y . 所以,这似乎是你想要的:

    [A-Z](?!%s)(.(?!%s))* (.(?!%s))*!!!
    

    在哪里? %s 是你的禁带。

        2
  •  1
  •   eumiro    14 年前

    [A-Z].* .*!!! 第二个应用于匹配的字符串并检查 _ 包含。

        3
  •  0
  •   Greg B    14 年前

    以任何大写字母开头;除下划线、空格外的所有内容都有一个可选字符串,然后除下划线外的所有内容都有一个可选字符串,后跟三个感叹号。

    [A-Z][^_]*[ ][^_]*!!!
    
        4
  •  0
  •   Fredrik Norlin    14 年前

    首先测试字符串是否出现“u”,因为这是不匹配的。然后检查你想要什么。

    下面是一个测试表达式的好网站: Nregex

    编辑

    [A-Z](?! _ )(\w(?! _ ))* (\w(?! _ ))*!!!
    
        5
  •  0
  •   Eamon Nerbonne    14 年前
    [A-Z]([^ ]*(?! _ ) ?)*!!!
    

    编辑: 我错过了你要求的至少一个地方。下面的regex包含该要求:

    [A-Z][^ ]* (?!_ )((?! _ ).)*!!!
    
        6
  •  0
  •   Zsolt Botykai    14 年前

    grep -v 选项(如果我在Linux上和/或可以使用 格雷普 ).

    所以找点东西,然后跳过那些没意思的部分。

    grep something <INPUT> | grep -v uninteresting
    

    没有grep(该死的windows,没有管理员权限),但是有Vim:

    vim -c "v/i'm searching for this/d" -c "g/and don't need this/d" -c "w checkoutput" <INPUT>
    

    checkoutput . 你应该检查一下。)

    高温高压

        7
  •  -1
  •   TEmp69    14 年前

    有一个很好的小程序,你可以建立你的正则表达式一起测试。

    http://software.marioschneider-online.de/?C%23%3A_RegEx_Test