Regex 带有可选URL片段的正则表达式前瞻

Regex 带有可选URL片段的正则表达式前瞻,regex,lookahead,Regex,Lookahead,我在为以下内容编写一个包罗万象的正则表达式时遇到了问题 我有一个url的格式 www.someurl.com/dir1/dir2/dir3/page?bunchorfrandomvariables 我还有一个稍微修改过的URL版本 www.someurl.com/dir1/newdirectory/dir2/dir3/page?bunchorfrandomvariables 其中newdirectory可以是字母数字,也可以包含破折号 我想要一个可以匹配原始URL(没有“newdirectory

我在为以下内容编写一个包罗万象的正则表达式时遇到了问题

我有一个url的格式

www.someurl.com/dir1/dir2/dir3/page?bunchorfrandomvariables

我还有一个稍微修改过的URL版本

www.someurl.com/dir1/newdirectory/dir2/dir3/page?bunchorfrandomvariables

其中newdirectory可以是字母数字,也可以包含破折号

我想要一个可以匹配原始URL(没有“newdirectory”)和任何经过的“newdirectory”的常规表达式

我的第一次尝试类似于

^www.someurl.com/dir1/[a-zA-Z]+/dir2/dir3/page?.*

不幸的是,这打破了第一个示例,因为[a-zA-Z]+捕获了“dir2”。用lookaheads写这篇文章是否可以在一行中捕获两个示例?

我刚刚修改了您的正则表达式:

  • 逃过了slaches(根据您使用的语言,可能不需要)
  • 使用

    ^www.someurl.com\/dir1(\/[a-zA-Z]+)?\/dir2\/dir3\/page?.*
    

是的,就这么简单。在思考过程的早期,我尝试过类似的方法,但我没有想到在dir1后面加“/”在()中?。非常感谢你的帮助