相关问题:How can I use regex to match a character (') when not following a specific character (?)?
我正在使用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上的正则表达式的cheatsheets以及http://www.regular-expressions.info/lookaround.html处的一些更有用的信息后,我现在尝试了以下的后视:
#"([(?<!\\)"]*)"#
但是,现在我得到的只是“”然后是一个空字符串
答案 0 :(得分:2)
你把你的外观置于你的小组([])中,所以它不是这样解释的,而只是你说你只想要那些个别角色。
基本上,我认为你喜欢这样的东西:
#"(?:[^"]|(?<=\\)")"#
虽然你应该知道你会受到\\“的控制。例如。
答案 1 :(得分:1)
日志中的URL将进行URL编码。因此,以下模式应该有效:
#\"([^ ]*)\"#