相关问题:当不跟随特定字符(?)时,如何使用regex匹配字符(')?
我正在使用regex (PHP PCRE库)解析日志,并试图从中提取URL。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://addedbytes.com上重新发现regex的备考表以及http://www.regular-expressions.info/lookaround.html上的一些更有用的信息后,我现在尝试了以下回顾:
#"([(?<!'')"]*)"#
但是,现在我得到的是"然后是一个空字符串
你把你的lookbehind INSIDE你的组([]),所以它不会被解释为这样,而只是你说你只想要那些单独的字符。
基本上,我想你会喜欢这样的:
#"(?:[^"]|(?<='')")"#
尽管你应该意识到你可能会被"''"之类的人骚扰。
日志中的url将被url编码。因此,以下模式应该可以工作:
#'"([^ ]*)'"#