Php:除了引号之间的字符外,如何从字符串中删除任何字符或整个字符串?
非常相似,但我不想删除空格,而是删除任何字符。例如,我试图从字符串中删除新行(0x10或0x13字符),但如果某个内容在“”或“”附近,则必须保持不变。我正在使用php。您可以通过替换以下表达式来实现这一点:Php:除了引号之间的字符外,如何从字符串中删除任何字符或整个字符串?,php,regex,Php,Regex,非常相似,但我不想删除空格,而是删除任何字符。例如,我试图从字符串中删除新行(0x10或0x13字符),但如果某个内容在“”或“”附近,则必须保持不变。我正在使用php。您可以通过替换以下表达式来实现这一点: ("[^"]*"|'[^']*')|[\r\n]+ 第一个捕获组的内容:$1 其工作原理是捕获引号并将其替换为自己的引号,或者匹配要删除的内容并将其替换为空字符串 如果还要处理反斜杠转义,可以在同一替换中使用以下表达式: ("(?:[^"\\]+|\\.)*"|'(?:[^'\\]+|\
("[^"]*"|'[^']*')|[\r\n]+
第一个捕获组的内容:$1
其工作原理是捕获引号并将其替换为自己的引号,或者匹配要删除的内容并将其替换为空字符串
如果还要处理反斜杠转义,可以在同一替换中使用以下表达式:
("(?:[^"\\]+|\\.)*"|'(?:[^'\\]+|\\.)*')|[\r\n]+
虽然实现您想要的regexp并不难,但值得注意的是,字符串(由单引号或双引号表示)可能包含转义字符,这可能会破坏您的regex(取决于转义机制)。例如:
“他说\“你好\”!“
你能给出一个示例字符串吗?从中删除@:$a=”sdfsdf@dsf@ "sdfdsf@sdhereThe@一定没碰过!!”sdfsf@sdf';您可能希望((?:[^“\\]+\124\\)*“\”(?:[^“\\]+\ 124\\)*“\\\”。[\ r\n]+
,也考虑引号外的转义字符。在我的回答中,我假设引号外没有转义。