我尝试使用正则表达式在&client=
和&
之间的网址中找到字符串
我考虑过像这样使用它:client=[a-zA-Z]+
但它会停在_所以我真的需要它&client=
到&
URL:
/search?q=tuition&btnG.x=0&btnG.y=0&site=transfer_credit&client=transfer_credit&proxystylesheet=transfer_credit&output=xml_no_dtd&proxycustom=HOME
site=
之后的字符串总是不同的,这对于regex来说应该是唯一的。
Here是我对正则表达式的尝试。
答案 0 :(得分:2)
答案 1 :(得分:1)
使用此正则表达式:
client=(.*?)&
我使用惰性量化器*?
来匹配&
符号前可能的字符数。要获得该值,您可以将其放入捕获组:client=(.*?)&
并摆脱前瞻(这是一种"扩展")。以下是如何使用JavaScript编码的示例:
var re = /client=(.*?)&/;
var str = '/search?q=tuition&btnG.x=0&btnG.y=0&site=transfer_credit&client=transfer_credit&proxystylesheet=transfer_credit&output=xml_no_dtd&proxycustom=HOME';
if ((m = re.exec(str)) !== null) {
document.getElementById("res").innerHTML = m[1]
}

<div id="res"/>
&#13;
答案 2 :(得分:1)
您没有提供任何关于为什么尝试使用正则表达式解析URL查询字符串参数的上下文,但一般情况下这不是一个好主意。
以下是目前的答案,他们都有问题:
client=[^&]+
client=.+?
client=(.*?)&
由于以下一个或多个原因,所有这些答案都将失败:
错误地将可能包含单词client
的其他查询参数名称作为子字符串(例如other_client
)。
如果client
参数值为空,则不匹配。也许这就是你想要的,但是你无法区分client
值为空,client
参数完全丢失。
在client
值后需要&符号。因此,它无法识别client
是指定的最后一个查询参数的有效查询字符串。查询字符串中编码的查询参数的顺序不保证一致。它可以是第一个参数,最后一个参数,也可以是介于两者之间的任何位置。
假设&符号&
是唯一可用于查询字符串以分隔查询参数的字符。可以使用分号字符;
代替。
这些答案很好地证明了使用正则表达式解析URL查询字符串充满了危险。很难说明查询字符串参数及其值可以假设的所有有效变体。
如果你必须使用正则表达式,那么我认为将适用于这个特定情况。也许它也包含一个我不知道的错误?
\bclient=[^&;]*
但是如果您有选择,最好使用库(使用您选择的语言)将URL解析为其组成部分。
答案 3 :(得分:0)
您可以将正则表达式更改为:
client=.+?
使用regex101链接:
https://regex101.com/r/lQ9hD0/6
顺便说一句,您可以使用捕获组来捕获内容:
client=(.+?)