[英]perl regular expression
我有一些这种格式的URL。 有些网址包含&abc=4
,有些则不含。
xxxxxxxxxxxxxxxxxxxxxxxxxxx&abc=4
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&abc=4
xxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
此处xxxxxxxxxxxxxxxxxxxxx
是字符串
我想匹配仅具有xxxxxxxxxxxxxxxxx
而不具有&abc=4
的URL(这意味着我想获得这些类型的URL,仅具有xxxxxxxxxxxxxx
, xxxxxxxxxxxxxx
, xxx
)
我知道如何编写与整个网址匹配的正则表达式。 例如: /x.*abc=4/
但是,如何编写仅匹配xxxxxxxxxx
而不匹配&abc=4
的正则表达式?
我将使用否定的前瞻性断言(请注意不允许遵循的模式)
^(?!.*&abc=4$).*$
此模式将匹配任何以&abc=4
结尾的字符串
您可以在此处在线验证: http : //www.rubular.com/
假设您的网址在每一行中,则可以使用:
([^&]+?)
这基本上将匹配&的第一个实例之前的所有内容。
正如@Benoit所说,您可以使用零宽度表达式来取消对查询字符串的捕获,但是您将采用正向先行而不是负向后行的语法示例:
(?=(&[^=]+?\d+)+)
如您所见,这会使表达式变得复杂。
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.