【问题标题】:Regex formation and Issue in Negation正则表达式的形成和否定问题
【发布时间】:2021-10-04 19:28:13
【问题描述】:

我需要创建两个正则表达式

一,用于捕获这些类型的字符串:

  • /xyz-courses/test/test
  • /abc-courses/test-abc/test-xyz
  • /abc-courses/test-abc/test-xyz?itsok=yes

但我不想匹配这些 fixed 单词前面带有 -courses 的字符串:

  • /固定-课程/测试/测试
  • /固定-courses/test-abc/test-xyz
  • /固定-courses/test-abc/test-xyz?itsok=yes

我创建了以下正则表达式,它工作得很好,但不确定如何排除前置词 fixed

/([^/]+)-courses/([^/]+)/([^/]+)$

其次,我需要创建正则表达式来否定上一步中创建的所有正则表达式。 我试过了:

[^/([^/]+)-courses/([^/]+)/([^/]+)]$

但这在所有 REGEX 检查器上都显示无效。

【问题讨论】:

    标签: regex


    【解决方案1】:

    您可以在courses 之前使用此正则表达式来禁止fixed-

    ^/((?!fixed-)[^/-]+)-courses/([^/]+)/([^/]+)$
    

    RegEx Demo

    对于第二部分,使用它来否定第一个正则表达式:

    ^/(?!((?!fixed-)[^/-]+)-courses/([^/]+)/([^/]+)$).+
    

    RegEx Demo 2

    【讨论】:

    • 您能否为第二个正则表达式添加一些有效/无效匹配项,然后我可以调查一下。
    • 非常感谢阿努巴瓦。印度真的是一个聪明人的地方。
    • 在这种情况下使用:^/(?!((?!fixed-)[^/-]+)-courses/([^/]+)/([^/]+)$).+
    • 谢谢。知道我是否可以在所有这些正则表达式中添加一个静态字符串。我尝试了一些类似的方法:[https://www.abc.me]?^/(?!((?!fixed-)[^/-]+)-courses/([^/]+)/([^/]+)$).+ 但它不起作用
    • 应该是:^(https://www\.abc\.me)?/((?!fixed-)[^/-]+)-courses/([^/]+)/([^/]+)$
    猜你喜欢
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多