繁体   English   中英

perl正则表达式

[英]perl regular expression

我有一些这种格式的URL。 有些网址包含&abc=4 ,有些则不含。

xxxxxxxxxxxxxxxxxxxxxxxxxxx&abc=4
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&abc=4
xxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

此处xxxxxxxxxxxxxxxxxxxxx是字符串

我想匹配仅具有xxxxxxxxxxxxxxxxx而不具有&abc=4的URL(这意味着我想获得这些类型的URL,仅具有xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

我知道如何编写与整个网址匹配的正则表达式。 例如: /x.*abc=4/

但是,如何编写仅匹配xxxxxxxxxx 而不匹配&abc=4的正则表达式?

我将使用否定的前瞻性断言(请注意不允许遵循的模式)

^(?!.*&abc=4$).*$

此模式将匹配任何以&abc=4结尾的字符串

您可以在此处在线验证: http//www.rubular.com/

断言后使用否定性后置 形式是:

(?<![&?]abc=4)

(这还将排除?abc=4 )。

假设您的网址在每一行中,则可以使用:

([^&]+?)

这基本上将匹配&的第一个实例之前的所有内容。

正如@Benoit所说,您可以使用零宽度表达式来取消对查询字符串的捕获,但是您将采用正向先行而不是负向后行的语法示例:

(?=(&[^=]+?\d+)+)

如您所见,这会使表达式变得复杂。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM