作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试将二进制字符串拆分为重复字符数组。
例如,用此函数拆分的 10001101
数组将是:
$arr[0] = '1';
$arr[1] = '000';
$arr[2] = '11';
$arr[3] = '0';
$arr[4] = '1';
(我试图让自己说清楚,但如果你还是不明白,我的问题与this 相同,但针对 PHP,而非 Python)
最佳答案
您可以使用 preg_split
像这样:
$in = "10001101";
$out = preg_split('/(.)(?!\1|$)\K/', $in);
print_r($out);
Array
(
[0] => 1
[1] => 000
[2] => 11
[3] => 0
[4] => 1
)
正则表达式:
(.)
- 匹配单个字符并捕获它(?!\1|$)
- 查看下一个位置并匹配它是否与我们刚刚找到的位置不同,也不是字符串的结尾。\K
- 将匹配的文本保持在整个正则表达式匹配之外,使该匹配为零宽度。注意:这在 5.6.13 之前的 PHP 版本中不起作用,因为有一个 bug involving bump-along behavior with \K .
另一种适用于早期版本的正则表达式是:
$out = preg_split('/(?<=(.))(?!\1|$)/', $in);
这使用后视而不是 \K
来使匹配零宽度。
关于php - 如何在 PHP 中通过重复字符拆分字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33196924/
我是一名优秀的程序员,十分优秀!