记事本和x2B之间反斜杠的差异+;和PHP
编辑:我找到了一个意想不到的解决方案。见下文 通过PHP的preg_match_all使用regex,我希望以json格式的字符串匹配某个url(编辑:已经转义)。搜索在Notepad++(当然使用正则表达式匹配)中运行得非常好,但是记事本和x2B之间反斜杠的差异+;和PHP,php,regex,notepad++,Php,Regex,Notepad++,编辑:我找到了一个意想不到的解决方案。见下文 通过PHP的preg_match_all使用regex,我希望以json格式的字符串匹配某个url(编辑:已经转义)。搜索在Notepad++(当然使用正则表达式匹配)中运行得非常好,但是preg\u match\u all()只返回一个空数组 在上进行测试时,我发现我通常的反斜杠转义方法会产生一个模式错误,即即使是简单的模式https:\\也会返回一个空结果 我完全糊涂了,并且已经尝试调试太久了,所以我可能会错过显而易见的东西。也许你们中的一个能看
preg\u match\u all()
只返回一个空数组
在上进行测试时,我发现我通常的反斜杠转义方法会产生一个模式错误,即即使是简单的模式https:\\
也会返回一个空结果
我完全糊涂了,并且已经尝试调试太久了,所以我可能会错过显而易见的东西。也许你们中的一个能看到简单的错误
模式(在Notepad++中可以正常工作,但在PHP中不能):
%(https:\/\/play.spotify.com\\/track\\/)(.*?(\”)%
在PHP中不需要转义斜杠%(https://play.spotify.com/track/)(.*)(\”)%
只有当您也是双引号时,才需要双引号前的反斜杠。找到了解决我问题的方法 根据,我需要将每个反斜杠与
\\\\\
匹配。可怕,但却是真的
所以我的模式是:
$pattern=“%”(https:\\\/\\\\\/play\.spotify\.com\\\\/track\\\\\/)(.*?(\”)”%;
请注意,我试图在一个字符串中找到一个模式,该模式不包含清晰的URL,但URL包含转义字符(这是spotify的json输出)首先,正则表达式有不同的“风格”(这在所有文档中都提到过)第二,转义的方式取决于如何定义字符串。这通常是问题所在,而不是正则表达式引擎本身。在定义字符串后检查字符串中包含的内容。@arkascha:注意notepad++使用与PHP相同的正则表达式风格。@CasimiretHippolyte啊,好的。我不知道那个应用程序,它只是一个一般性的注释。但没有告诉你自己,PHP使用不同的正则表达式风格是因为有不同的引擎。
preg…
函数使用单一风格。:-@fridde:Escaping是不需要的,因为分隔符是%
,而不是通常的/
,实际上我的问题有点让人困惑:我在字符串中寻找一个模式E类似于url,但编码为JSON,即已包含转义字符。