正则表达式 - 匹配URL的一部分

时间:2017-12-25 14:30:41

标签: regex

我正在尝试使用正则表达式来匹配以下网址的一部分:

  

http://www.example.com/store/store.html?ptype=lst&id=370&3434323&root=nav_3&dir=desc&order=popularity

我希望正则表达式找到:

&3434323

基本上,它意味着搜索不遵循variable=value公式的参数的任何部分。所以基本上我需要它来搜索没有相同符号的URL部分,但只匹配那部分。

我尝试使用:

  

&安培; \ W * + [^ = _-]

但它返回:& 3434323& 。我需要它不返回下一个&符号。

必须在正则表达式中完成。提前谢谢!

2 个答案:

答案 0 :(得分:2)

您可以使用此正则表达式:

[?&][^=]+(&|$)

它会查找不包含等号[^=]+的任何字符串,并以问号或&符号[?&]开头,以&符号或URL结尾{{1}结尾}}

请注意,这将返回(&|$),因此您必须在代码中删除两侧的&符号。我认为你很好。如果你真的不想要第二个&符号,你可以使用前瞻:

&3434323&

如果您不想要第一个&符号,您可以使用此正则表达式,但并非所有编译器都支持它:

[?&][^=]+(?=&|$)

答案 1 :(得分:2)

解析查询参数可能很棘手,但这可能会起到作用:

((?:[?&])[^=&]+)(?=&|$)

它不会在参数末尾捕获&符号,但它会包含问号或开头的&符号。它将匹配任何非键值对形式的参数。

演示here