我希望使用正则表达式来挑选雅虎搜索。也就是说,我搜索了雅虎Clojure tutorial
并希望在
https://search.yahoo.com/search;_ylt=ApnVZAn6KsJdNlo0rRPgg4qbvZx4?p=clojure+tutorial&toggle=1&cop=mss&ei=UTF-8&fr=yfp-t-176
我相信重新找到的功能会帮助我挑选出我的目标,但我不确定如何制定正则表达式。问题是搜索结果并不总是位于?p =和&符号之间。
例如,搜索clojure tutorial pdf
会产生
https://search.yahoo.com/search;_ylt=A0LEVzoK3gtTQWAA.K5XNyoA;_ylc=X1MDMjc2NjY3OQRfcgMyBGJjawMybDF2MXIxOWZha3VrJTI2YiUzRDQlMjZkJTNESnhYQjdIWnBZRUlva3dIRTNTMVJCTEJ0S28wMm96NDdCUjhoMmctLSUyNnMlM0Q5diUyNmklM0QxYU1hS3RnWlpHUFQySEo3MmNOdgRmcgN5ZnAtdC0xNzYEZ3ByaWQDTmlXZ0V1ZC5RY2VRaDQ5cUxrWEJLQQRtdGVzdGlkA0FEU1JQJTNEU01FMzMwJTI2QVNTVCUzRFFJMDM4JTI2VUkwMSUzRFZJUDMyMyUyNlVOSSUzRFJDRjA0MwRuX3JzbHQDMTAEbl9zdWdnAzYEb3JpZ2luA3NlYXJjaC55YWhvby5jb20EcG9zAzEEcHFzdHIDY2xvanVyZSB0dXRvcmlhbCAEcHFzdHJsAzE3BHFzdHJsAzIwBHF1ZXJ5A2Nsb2p1cmUgdHV0b3JpYWwgcGRmBHRfc3RtcAMxMzkzMjg2ODE2MzY2BHZ0ZXN0aWQDVklQMzIz?gprid=NiWgEud.QceQh49qLkXBKA&pvid=fgnc0Tk4LjEqh.HYUvVT1Ad6MjQuNlML3gr_66io&p=clojure+tutorial+pdf&fr2=sa-gp&fr=yfp-t-176
陷阱搜索& p =和&符号&amp ;.
总之,我正在寻找一个正则表达式,它捕获可以获取所有字符值的搜索,并且可以在[? &安培; P = ...&安培;
答案 0 :(得分:1)
(?:\?|\&)p=(.+?)\&
自由间隔:
(?:\?|\&) //A literal question mark OR ampersand
p= //Followed by "p="
(.+?) //Followed by at-least one of [anything but an ampersand]
\& //Followed by an ampersand.
捕获组$ 1包含搜索词
.+?
非贪婪,因此会转到 next &符号。如果您将其更改为.+
- 这不是您想要做的 - 那将是贪婪的并通过字符串中的 last &符捕获所有内容。
可行的替代方案是:
(?:\?|\&)p=([^&]+)