【问题标题】:Regular Expression to match pattern A and not pattern B [closed]正则表达式匹配模式 A 而不是模式 B [关闭]
【发布时间】:2012-09-06 17:36:38
【问题描述】:

背景:

我有一个使用正则表达式的 URL 重定向系统。

网址格式为:http://www.company.com/{任意数量的父页面}/parentX/{任意页面}.aspx

需要重定向到:http://www.company.com/parentY/parentX/{页面}.aspx

换句话说,所有具有直接父级 X 和任意数量的祖父级页面的页面现在都位于 parentY/parentX 下。

我可以轻松地编写一个正则表达式来匹配http://www.company.com/{任意数量的父页面}/parentX/{任意页面}.aspx 的 URL。但是,这也将匹配我重定向到的页面(导致重定向循环)。所以,我的表达式需要不匹配模式http://www.company.com/parentY/parentX/{the page}.aspx

有什么想法吗?

非常感谢

【问题讨论】:

  • http://www.company.com/ 之后的负前瞻?
  • 或者将它们全部匹配并签入您的代码?

标签: .net regex redirect


【解决方案1】:
#http://www.thecompany.com/(?!parentY).*/parentX/[^/].aspx#

我正在使用否定的前瞻断言。 (?!...) 是一个零宽度断言,可确保内部的正则表达式在此起始位置不匹配。不知道你用哪种语言写,我不确定你是否可以做到这一点,或者它是否可以变得更漂亮(例如,http://www.thecompany.com/parentY/parentZ/parentX 呢?) - 但这应该适用于你给出的情况在这里。

【讨论】:

  • 应该说——这是.NET
  • 这正是我所需要的。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-10
  • 2019-10-08
相关资源
最近更新 更多