Php 可以在正则表达式的模式部分使用反向引用吗?
有没有办法在正则表达式模式中返回引用 输入字符串示例:Php 可以在正则表达式的模式部分使用反向引用吗?,php,regex,backreference,Php,Regex,Backreference,有没有办法在正则表达式模式中返回引用 输入字符串示例: Here is "some quoted" text. 假设我想拉出引用的文本,我可以创建以下表达式: "([^"]+)" 此正则表达式将匹配一些引用的 假设我希望它也支持单引号,我可以将表达式更改为: ["']([^"']+)["'] 但是如果输入字符串混合了引号怎么办?比如说这里是'some quoted'文本。我不希望正则表达式匹配。目前第二个示例中的正则表达式仍然匹配 我想做的是,如果第一个报价是双报价,那么结束报价必须是双报
Here is "some quoted" text.
假设我想拉出引用的文本,我可以创建以下表达式:
"([^"]+)"
此正则表达式将匹配一些引用的
假设我希望它也支持单引号,我可以将表达式更改为:
["']([^"']+)["']
但是如果输入字符串混合了引号怎么办?比如说这里是'some quoted'文本。
我不希望正则表达式匹配。目前第二个示例中的正则表达式仍然匹配
我想做的是,如果第一个报价是双报价,那么结束报价必须是双报价。如果开始报价是单报价,那么结束报价必须是单报价
我可以使用反向引用来实现这一点吗
我的另一个相关问题:/“\(.*?\)”*?\1/
应该可以工作,但这取决于正则表达式引擎
preg_match('/(["\'])([^"\']+)\1/', 'Here is \'quoted text" some quoted text.');
解释:([“]])([^“']+)\1/
我将第一个引号放在括号中。因为这是第一个分组,它的后参考号是1。然后,在结束引号所在的位置,我将\1放在第1组中匹配的字符上。您可以使用正则表达式:
(["'])[^"']+\1
()
:用于分组
[…]
:是char类。因此[“”]
匹配“
或”
等效项
到“|”
[^..]
:带有否定的char类。
它匹配后面未列出的任何字符
^
+
:一个或多个的量词
\1
:反向引用第一个
([“'))
在PHP
中,您可以将其用作:
preg_match('#(["\'])[^"\']+\1#',$str)