Regex 在asad=之后和下一个&

Regex 在asad=之后和下一个&,regex,Regex,在asad=之后但在下一个&之前,我如何匹配任何内容 测试字符串: 预期提取: 253485_e1c6ae3ad 252485_c1c63c01 254325_c1c63c01d 204207_E1756D5 您需要非贪婪匹配,并且可能需要匹配a&或作为终止符的行尾: /asad=(.*?)(?:&|$)/ 这将告诉正则表达式引擎: 我们正在寻找asad的序列= 然后,捕捉一切直到。。。 我们看到a&或行$的结尾。 如果您使用贪婪匹配。*则它将捕获所有内容,直到无法再匹配终结符 使用测

在asad=之后但在下一个&之前,我如何匹配任何内容

测试字符串:

预期提取:

253485_e1c6ae3ad 252485_c1c63c01 254325_c1c63c01d 204207_E1756D5
您需要非贪婪匹配,并且可能需要匹配a&或作为终止符的行尾:

/asad=(.*?)(?:&|$)/
这将告诉正则表达式引擎:

我们正在寻找asad的序列= 然后,捕捉一切直到。。。 我们看到a&或行$的结尾。 如果您使用贪婪匹配。*则它将捕获所有内容,直到无法再匹配终结符

使用测试字符串:

https://teststore.com/collections/men/products/mens-sneakers?variant=310637539&asad=204207_e1c1756d5&foo=bar
贪婪匹配/asad=.*?:&|$/将捕获asad=204207_e1c1756d5&foo=bar,因为它可以在第$行结束前保持贪婪匹配,而非贪婪匹配/asad=.*?:&|$/正好捕获您想要的内容。

您可以使用lookahead:

x?=y–正前瞻与后跟“y”的“x”匹配 x?!y–负前瞻与“x”匹配,但后面没有“y” 您还可以使用lookbehinds:

? 这些都是你需要的例子, 如果文本有多行,请使用以下命令:

(?<=asad=).*?(?=(?:&|\n))
或者,如果您有一个包含多个字符串的数组,请使用

(?<=asad=).*?(?=(?:&|$))

示例关于

Threak@chris heald你能分享一个regex101示例吗?当我尝试测试时,我没有得到提取的字符串:那里的测试字符串包括分隔符avad,而不是asad。相应地调整测试字符串或匹配器。