Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 等号和与之间的正则表达式_Regex_Url - Fatal编程技术网

Regex 等号和与之间的正则表达式

Regex 等号和与之间的正则表达式,regex,url,Regex,Url,我试图使用正则表达式在&client=和立即&之间的URL中查找字符串 我考虑过这样使用它:client=[a-zA-Z]+但是它停在u,所以我真的需要它&client=来& 网址: site=之后的字符串总是不同的,这应该是唯一的,足以用于regex 是我对正则表达式的尝试。您可以使用此正则表达式: client=[^&]+ client=(.*?)& 这将匹配非&的任何字符中的一个或多个。您可以使用此正则表达式: client=[^&]+ client=(.*

我试图使用正则表达式在
&client=
和立即
&
之间的URL中查找字符串

我考虑过这样使用它:
client=[a-zA-Z]+
但是它停在u,所以我真的需要它
&client=
&

网址:

site=
之后的字符串总是不同的,这应该是唯一的,足以用于regex


是我对正则表达式的尝试。

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

client=[^&]+
client=(.*?)&


这将匹配非
&

的任何字符中的一个或多个。您可以使用此正则表达式:

client=[^&]+
client=(.*?)&

这将匹配一个或多个非
&

的任何字符使用此正则表达式:

client=[^&]+
client=(.*?)&

我正在使用惰性量词
*?
匹配
&
符号前尽可能少的字符。要获取该值,可以将其放入一个捕获组:
client=(.*)&
,并去掉一个前瞻(有点“扩展”)。下面是一个如何用JavaScript编码的示例:

var re=/client=(.*)&/;
var str='/search?q=tutory&btnG.x=0&btnG.y=0&site=transfer\u credit&client=transfer\u credit&proxystylesheet=transfer\u credit&output=xml\u no\u dtd&proxycustom=HOME';
如果((m=re.exec(str))!==null){
document.getElementById(“res”).innerHTML=m[1]
}
使用此正则表达式:

client=[^&]+
client=(.*?)&

我正在使用惰性量词
*?
匹配
&
符号前尽可能少的字符。要获取该值,可以将其放入一个捕获组:
client=(.*)&
,并去掉一个前瞻(有点“扩展”)。下面是一个如何用JavaScript编码的示例:

var re=/client=(.*)&/;
var str='/search?q=tutory&btnG.x=0&btnG.y=0&site=transfer\u credit&client=transfer\u credit&proxystylesheet=transfer\u credit&output=xml\u no\u dtd&proxycustom=HOME';
如果((m=re.exec(str))!==null){
document.getElementById(“res”).innerHTML=m[1]
}

您可以将正则表达式更改为:

client=.+?
使用您的regex101链接:

顺便说一句,您可以使用捕获组捕获内容:

client=(.+?)

您可以将正则表达式更改为:

client=.+?
使用您的regex101链接:

顺便说一句,您可以使用捕获组捕获内容:

client=(.+?)

您还没有提供任何上下文来解释为什么要尝试用正则表达式解析URL查询字符串参数,但通常这不是一个好主意

以下是当前的答案,它们都有问题:

client=[^&]+
client=.+?
client=(.*?)&
由于以下一个或多个原因,所有这些答案都将失败:

  • 错误地匹配可能包含单词
    client
    作为子字符串的其他查询参数名称(例如
    other\u client

  • 如果
    客户端
    参数值为空,则不匹配。也许这正是您想要的,但是您无法区分
    client
    值为空和
    client
    参数完全缺失

  • 客户端
    值后需要一个符号和字符。因此,如果
    client
    是最后指定的查询参数,它将无法识别有效的查询字符串。查询字符串中编码的查询参数顺序不能保证一致。它可以是第一个参数、最后一个参数或介于两者之间的任何位置

  • 假设符号和字符
    &
    是查询字符串中唯一可用于分隔查询参数的字符。分号字符
    可以改为使用

  • 这些答案很好地说明了用正则表达式解析URL查询字符串充满了危险。很难解释查询字符串参数及其值可以假定的所有有效变化

    如果必须使用正则表达式,我认为这是一个适用于这种特定情况的正则表达式。也许它也包含一个我不知道的bug

    \bclient=[^&;]*
    

    但是如果您有选择的话,最好使用一个库(使用您选择的语言)将URL解析为其组成部分

    您还没有提供任何上下文来解释为什么要用正则表达式解析URL查询字符串参数,但一般来说这不是一个好主意

    以下是当前的答案,它们都有问题:

    client=[^&]+
    client=.+?
    client=(.*?)&
    
    由于以下一个或多个原因,所有这些答案都将失败:

  • 错误地匹配可能包含单词
    client
    作为子字符串的其他查询参数名称(例如
    other\u client

  • 如果
    客户端
    参数值为空,则不匹配。也许这正是您想要的,但是您无法区分
    client
    值为空和
    client
    参数完全缺失

  • 客户端
    值后需要一个符号和字符。因此,如果
    client
    是最后指定的查询参数,它将无法识别有效的查询字符串。查询字符串中编码的查询参数顺序不能保证一致。它可以是第一个参数、最后一个参数或介于两者之间的任何位置

  • 假设符号和字符
    &
    是查询字符串中唯一可用于分隔查询参数的字符。分号字符
    可以改为使用

  • 这些答案很好地说明了用正则表达式解析URL查询字符串充满了危险。很难解释查询字符串参数及其值可以假定的所有有效变化

    如果必须使用正则表达式,我认为这是一个适用于这种特定情况的正则表达式。也许它也包含一个我不知道的bug

    \bclient=[^&;]*
    
    但是如果您有选择的话,最好使用一个库(使用您选择的语言)将URL解析为其组成部分

    既然你用