2013-04-04 75 views
0

相關問題的字符的第一個實例:How can I use regex to match a character (') when not following a specific character (?)?如何匹配的對象,直到不遵循另一個特定的字符

我使用正則表達式(PHP PCRE庫)分析日誌,並試圖提取網址從中。該URL使用雙引號封裝「,但其中一些請求還包含雙引號」。例如:

"https://www.amh.net.au/online/dbSearch.php?t=all&q=\"Rosuvastatin\"" 

我的第一個模式是基本上是:

#\"([^\"]*)\"# 

這個工作很好,直到我達到如上的一個條目,它截斷了比賽,因此所有我得到的是:

https://www.amh.net.au/online/dbSearch.php?t=all&q=\ 

周圍挖掘,並在http://www.regular-expressions.info/lookaround.htmlhttp://addedbytes.com,還有一些更有用的信息,重新發現了正則表達式的備忘後,我現在已經嘗試以下look-背後:

#"([(?<!\\)"]*)"# 

不過,現在我得到的是「」,然後一個空字符串

回答

1

在日誌中的網址是。URL編碼因此,下面的模式應該工作:

#\"([^ ]*)\"# 
2

你放置你的回顧後內,您的組([]),所以它不會被解釋爲這樣的,而是隻有你說你只想要那些個人角色。
基本上,我想你想是這樣的:

#"(?:[^"]|(?<=\\)")"# 

雖然你應該知道,你會通過\\被觸輪」例如