【问题标题】:Matching all strings without 3 occurrences of/or final single character in RegEx匹配 RegEx 中没有 3 次出现/或最终单个字符的所有字符串
【发布时间】:2017-05-18 05:01:19
【问题描述】:

试图找出标题的正则表达式,

即,

  1. foo/bar/foo
  2. foo/bar/foo/bar
  3. foo/bar/d

我不希望它匹配第三个或第四个,而是匹配前两个。在第二个选项中,最终的 foo 可以是任何东西,而不是单个 d。

【问题讨论】:

  • 你有什么理由使用正则表达式吗?我觉得没有会更简单
  • 在网络配置中用于匹配可变 url 和重定向。
  • 这是一个 .net 网络配置,匹配现有的 url 并在字符串匹配时重定向它们。
  • 你在使用 ASP.NET 吗?
  • 这不是一个得来速的正则表达式支架。你自己做了哪些努力来解决这个问题?

标签: regex


【解决方案1】:

您可以使用正则表达式,但它比仅计算斜杠的数量并检查最后一个字符不是 d 更复杂。如果你想使用正则表达式来检查最后一部分不是“/d”,你可以做一些检查它是否不匹配 ^.*/d$ 但只使用代码可能更清楚。 (如果计数斜线和检查字符串不以“/d”结尾不是您的意思,那么提供更多示例会有所帮助)

【讨论】:

    【解决方案2】:

    想通了。如果有人感兴趣,请参阅下文。

    (^foo/?$)|(^foo/[^/]+/(([^d][^/]*)|(d[^/]+))/?$)
    

    【讨论】:

    • 您有多确定这完全正确?维护此代码的人有多友好?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    • 2014-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-13
    • 1970-01-01
    相关资源
    最近更新 更多