Php 使用正则表达式查找单引号和双引号内的字符串

Php 使用正则表达式查找单引号和双引号内的字符串,php,regex,preg-match-all,Php,Regex,Preg Match All,如何使用正则表达式查找“和”之间的字符串。我只想使用PHPpreg\u match\u all()函数创建一个函数,该函数将匹配文件中的所有静态字符串,因此我们可能正在使用“和”创建一个字符串,因此我需要从文件中查找所有此类字符串。这将匹配“和”字符串: /((?<!\\)["']).+?(?<!\\)\1/m /((?这将匹配“和”字符串: /((?<!\\)["']).+?(?<!\\)\1/m /((?此正则表达式将执行您想要执行的操作,请注意,您无法真正识别“

如何使用正则表达式查找
之间的字符串。我只想使用PHP
preg\u match\u all()
函数创建一个函数,该函数将匹配文件中的所有静态字符串,因此我们可能正在使用
创建一个字符串,因此我需要从文件中查找所有此类字符串。

这将匹配
字符串:

/((?<!\\)["']).+?(?<!\\)\1/m
/((?这将匹配
字符串:

/((?<!\\)["']).+?(?<!\\)\1/m

/((?此正则表达式将执行您想要执行的操作,请注意,您无法真正识别“you's”中撇号与“you's string”之间的语义差异

preg_match_all(
    "|(['\"])([^\"]*)(\1)|g",
    'This \'is a\' small "demo of what" you\'re trying, to "do"!'
);
参考


此正则表达式将执行您想要执行的操作,但请注意,您无法真正识别“you's”中撇号与“you's string”之间的语义差异

preg_match_all(
    "|(['\"])([^\"]*)(\1)|g",
    'This \'is a\' small "demo of what" you\'re trying, to "do"!'
);
参考


您应该知道,在那些引用的“实体”中,您可能会找到转义引号。匹配这些字符串的最佳方法是使用如下正则表达式:

(?s)'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"

示例代码:

$re = "/(?s)'(?:[^'\\\\]|\\\\.)*'|\"(?:[^\"\\\\]|\\\\.)*\"/"; 
$str = "\"string 'c' \" string \" \" and ' string \"ste\" \' '"; 
preg_match_all($re, $str, $matches);

您应该知道,在那些引用的“实体”中,您可能会找到转义引号。匹配这些字符串的最佳方法是使用如下正则表达式:

(?s)'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"

示例代码:

$re = "/(?s)'(?:[^'\\\\]|\\\\.)*'|\"(?:[^\"\\\\]|\\\\.)*\"/"; 
$str = "\"string 'c' \" string \" \" and ' string \"ste\" \' '"; 
preg_match_all($re, $str, $matches);


到目前为止,您尝试了什么?正则表达式可能不是合适的解决方案,因为您必须处理字符串中的(转义)引号…如不时地处理
或不时地处理
我不同意否决票,因为这是一个真正的问题。即使正则表达式不是正确的解决方案。基于OPS问题,尽管含糊不清,简单的答案是:
/([“]+?)(.*)(\1?)然而,@ eRICBN有一个关于嵌套的有效点;尽管这可以用ReGEX中的否定/前瞻来解决。您想在PHP文件中搜索所有静态字符串吗?还是用另一种特定格式搜索?@ ASH,如果您认为这是一个好问题,请用答案回答。这不是一个格式错误的问题,也不是一个离题的问题,因此不值得投反对票。我很可能会提出我的答案,但这并不意味着我现在可以发布一个快速的oneliner。到目前为止,你尝试了什么?正则表达式可能不是合适的解决方案,因为你必须处理(转义)字符串中的引号…如不时的
“time”
或不时的
“time\”
我不同意否决票,因为这是一个真正的问题。即使正则表达式不是正确的解决方案。基于OPS问题,尽管不明确,简单的答案是:
/([“]+?)(.*?)(\1?)然而,@ eRICBN有一个关于嵌套的有效点;尽管这可以用ReGEX中的否定/前瞻来解决。您想在PHP文件中搜索所有静态字符串吗?还是用另一种特定格式搜索?@ ASH,如果您认为这是一个好问题,请用答案回答。这不是一个格式错误的问题,也不是一个离题的问题,因此不值得投反对票。我很可能会提出我的答案,但这并不意味着我现在可以发布一个简单的答案。当你的正则表达式失败时(注意右边的*\\*
)。我自己一直在使用look behinds,直到我找到了一个真正的解决方案。@Stribizev更正了正则表达式。第一个引号也需要一个负的lookbehind。我认为它现在应该可以工作了。假设它在没有转义实体的情况下可以工作,否则它可能会产生意外的结果。当你的正则表达式失败时(注意右边的“
)符号*\*)。我自己一直在使用look behinds,直到我找到了一个真正的解决方案。@Stribizev更正了正则表达式。第一个引用也需要一个负的lookbehind。我认为它现在应该可以工作了。假设它在没有逃逸实体的情况下可以工作,否则它可能会产生意外的结果。谢谢你。但是,我不能放弃这个例子在一个PHP文件中,我可能遗漏了一些东西,但是很好的一点。谢谢你。但是,我不能看到PHP文件中的例子,我可能遗漏了一些东西,但是很好的一点。很好的解决方案,通过了任意数量的连续反斜杠测试。很好的解决方案,通过了任意数量的连续反斜杠测试es测试。