RegExp 捕获文字
RegExp Capture literals
我需要一种从 PHP 文件中去除所有文字的方法。当字符串中没有嵌套引号时,我当前的正则表达式解决方案工作正常。尝试更新它以处理转义引号,这在大多数情况下都有效,除非字符串中存在转义转义字符。
这是它应该能够处理的,如果这应该正确地完成的话
"text"
"\"text\""
"\"
"\"\\""
所以在我看来,它需要处理转义字符数量均匀的情况和数量不均匀的情况。但是你如何把它变成正则表达式呢?
更新
我想清理 PHP 文件,使它们更容易搜索和索引不同的部分,这是我正在玩的一个小项目的东西。由于文字几乎可以包含任何内容,因此它们也可以包含类似于某些搜索的数据。所以我想删除文件中包含在 " 或 '.
中的任何内容
"/\"[^\"]*\"/"
除非有嵌套引号“\"data\"”,否则这将起作用。
"/\"(\\\"|[^\"])*\"/"
除非有“\\”
,否则这将起作用
这就是我需要的
$var = "...";
变成
$var = ;
您可以使用这个基于正则表达式的替换:
查找:((?<!\)(?:\.)*)(["'])(?:\.|(?!).)*?
替换:</code></p>
<p>请注意,如果您要在 PHP 中使用此正则表达式(将其编码为字符串文字),您需要转义该正则表达式中的反斜杠和引号,如下所示:</p>
<pre><code>preg_replace("~((?<!\\)(?:\\.)*)([\"'])(?:\\.|(?!\2).)*?\2~s", "", $input);
由于 PHP 字符串文字可以跨越多行,因此添加了 s
修饰符,以便 .
也匹配换行符。
在 eval.in
上查看 运行
注意:您还需要考虑 heredoc 符号...
我需要一种从 PHP 文件中去除所有文字的方法。当字符串中没有嵌套引号时,我当前的正则表达式解决方案工作正常。尝试更新它以处理转义引号,这在大多数情况下都有效,除非字符串中存在转义转义字符。
这是它应该能够处理的,如果这应该正确地完成的话
"text"
"\"text\""
"\"
"\"\\""
所以在我看来,它需要处理转义字符数量均匀的情况和数量不均匀的情况。但是你如何把它变成正则表达式呢?
更新
我想清理 PHP 文件,使它们更容易搜索和索引不同的部分,这是我正在玩的一个小项目的东西。由于文字几乎可以包含任何内容,因此它们也可以包含类似于某些搜索的数据。所以我想删除文件中包含在 " 或 '.
中的任何内容"/\"[^\"]*\"/"
除非有嵌套引号“\"data\"”,否则这将起作用。
"/\"(\\\"|[^\"])*\"/"
除非有“\\”
,否则这将起作用这就是我需要的
$var = "...";
变成
$var = ;
您可以使用这个基于正则表达式的替换:
查找:((?<!\)(?:\.)*)(["'])(?:\.|(?!).)*?
替换:</code></p>
<p>请注意,如果您要在 PHP 中使用此正则表达式(将其编码为字符串文字),您需要转义该正则表达式中的反斜杠和引号,如下所示:</p>
<pre><code>preg_replace("~((?<!\\)(?:\\.)*)([\"'])(?:\\.|(?!\2).)*?\2~s", "", $input);
由于 PHP 字符串文字可以跨越多行,因此添加了 s
修饰符,以便 .
也匹配换行符。
在 eval.in
上查看 运行注意:您还需要考虑 heredoc 符号...