如何逐个拆分字符串但忽略转义字符? 这是我的例子,我有字符串: -
\ntest\rtest\n
我希望它是这样的: -
Array
(
[0] => \n
[1] => t
[2] => e
[3] => s
[4] => t
[5] => \r
[6] => t
[7] => e
[8] => s
[9] => t
[10] => \n
)
有人说使用preg_split,但我对regex知之甚少。
答案 0 :(得分:3)
反斜杠需要在RegEx中转义。
在引用一个实际反斜杠时,您需要一系列三个\\\
RegEx匹配
preg_match_all("/\\\?[^\\\]/", $str, $matches);
现场演示代码:http://codepad.viper-7.com/FLjH9A
RegEx拆分 - 仅用于教育目的,因为在这种情况下匹配更合适
$matches=preg_split("/(?<=\\\[^\\\])(?!$)|(?<=[^\\\])(?!$)/", $str);
答案 1 :(得分:2)
您可以先删除所选的转义字符,然后应用str_split()
:
$str = "\ntest\rtest\n";
print_r(str_split(strtr($str, array(
'\r' => '',
'\n' => '',
))));
答案 2 :(得分:1)
如果你只想获取数组,你可以逐个读取字符串。 无论是关于正则表达式。
答案 3 :(得分:0)
如果您想匹配每个单个字符(可选择以\
开头),您可以使用:
$str = '\ntest\rtest\n';
preg_match_all('/\\\?[a-zA-Z]/', $str, $matches);
哪个会返回包含单个和转义字符序列的数组。