Php 如何匹配字符串,直到第一个字符的实例不在另一个特定字符之后
相关问题: 我正在使用regex(phppcre库)解析一个日志,并试图从中提取一个URL。URL封装在双引号中”,但有些请求也包含双引号”。例如:Php 如何匹配字符串,直到第一个字符的实例不在另一个特定字符之后,php,regex,pcre,regex-lookarounds,Php,Regex,Pcre,Regex Lookarounds,相关问题: 我正在使用regex(phppcre库)解析一个日志,并试图从中提取一个URL。URL封装在双引号中”,但有些请求也包含双引号”。例如: "https://www.amh.net.au/online/dbSearch.php?t=all&q=\"Rosuvastatin\"" 我的第一个模式基本上是: #\"([^\"]*)\"# 这很有效,直到我达到上面的一个条目,它截断了匹配,所以我得到的是: https://www.amh.net.au/online/dbSearc
"https://www.amh.net.au/online/dbSearch.php?t=all&q=\"Rosuvastatin\""
我的第一个模式基本上是:
#\"([^\"]*)\"#
这很有效,直到我达到上面的一个条目,它截断了匹配,所以我得到的是:
https://www.amh.net.au/online/dbSearch.php?t=all&q=\
在四处挖掘并重新发现了上的regex的备忘单以及上的一些更有用的信息之后,我现在尝试了以下方法:
#"([(?<!\\)"]*)"#
#“([?
但是,现在我得到的是“”,然后是一个空字符串,您将lookback放在您的组([])中,因此它不是这样解释的,而是您说您只需要这些单独的字符。
基本上,我想你会喜欢这样的东西:
#"(?:[^"]|(?<=\\)")"#
#“(?:[^”]|(?您将您的lookback放在您的组([])中,因此它不会被解释为这样,而只是您说您只需要这些单独的字符。
基本上,我想你会喜欢这样的东西:
#"(?:[^"]|(?<=\\)")"#
#“(?:[^”]|)(?日志中的URL将是URL编码的。因此,以下模式应该可以工作:
#\"([^ ]*)\"#
日志中的URL将是URL编码的。因此,以下模式应该可以工作:
#\"([^ ]*)\"#