2015-11-25 24 views
-2

我有搜索詞提到以下網址:如何正則表達式搜索詞在URL

搜索條件:新的汽車

網址:

https://www.google.co.in/search?q=new+cars&oq=new+car&aqs=chrome.1.69i57j0l5.340860j0j8&sourceid=chrome&es_sm=122&ie=UTF-8 

檢索詞:叢林書&字符

URL:

https://in.search.yahoo.com/search;_ylt=A2oKmKEkpE1WqioAkV67HAx.;_ylc=X1MDMjExNDcyMzAwMwRfcgMyBGZyA3lmcC10LTEwMQRncHJpZANWSDhxR0pDUlJZcXNUTG1oM0JkMFBBBG5fcnNsdAMwBG5fc3VnZwM4BG9yaWdpbgNpbi5zZWFyY2gueWFob28uY29tBHBvcwMwBHBxc3RyAwRwcXN0cmwDBHFzdHJsAzI0BHF1ZXJ5A2p1bmdsZSBib29rICYgY2hhcmFjdGVycwR0X3N0bXADMTQ0NzkyODk3Nw--?p=jungle+book+%26+characters&fr2=sb-top-in.search&fr=yfp-t-101&vm=r 

有沒有一種方法來正則表達式,只匹配搜索詞(不包括特殊字符)以通用的方式,以便它可以處理所有類型的搜索URL?

+0

你在用什麼語言?我會從一個聰明的正則表達式開始提取查詢字符串的相關部分。然後我會根據你想匹配的條款來分割和檢查每件作品。 –

+0

這是Java腳本。 –

+0

我不確定這裏是否有銀色的子彈,因爲您列出的每個網站的查詢參數都有不同的名稱。 –

回答

0

我發現它終於..在這裏我們需要考慮各種圖案中發現的搜尋網址: 使用非捕獲組:

(?:(?:[?|&][p|q]=))([^&]*) 

https://regex101.com/r/gG6jR7/2

不使用非捕獲組:

[?|&][p|q]=([^&]*) 

https://regex101.com/r/gG6jR7/3

+0

爲什麼使用這個而不是其他人發佈的更有效的正則表達式呢? 'p =([^&] *),因爲@Jan也發佈了作品。 '[pq] =([^&] *)'適用於Google和Yahoo。 – WillS

+0

它是因爲p被雅虎使用,q被谷歌使用。 我的正則表達式處理兩者。 –

2
  • 谷歌:q=([^&]*)(後q=比賽一切都交給下一 符號或到年底)比賽:​​

  • 雅虎:p=([^&]*)(與p=同樣的想法)
    比賽:jungle+book+%26+characters

  • Both:[pq]=([^&]+)(combined,p或q)

雖然這可能會起作用,但您最好在PHP中使用parse_url()或者(因爲您的問題帶有JavaScript標記)請參閱phpjs.org,它與JS中的PHP函數等效。

看到這個工作regex fiddle for yahoo