我希望在更改案例时拆分字符串。
例如,我有两个字符串:ABCcd
和abCDE
。
我会在第一个结果ABC
和cd
以及第二个ab
和CDE
结果。未定义小写和大写的数量。
我已经尝试使用preg_match
和preg_split
,但我在定义正确的正则表达式时遇到了一些问题。
答案 0 :(得分:1)
也许匹配零宽度是一种选择。
正则表达式: (?<=[A-Z])(?=[a-z])|(?<=[a-z])(?=[A-Z])
Php代码:
<?php
$str = "aaaaBddDDDeeFFggJ";
$match = preg_split("/(?<=[A-Z])(?=[a-z])|(?<=[a-z])(?=[A-Z])/", $str);
foreach ($match as $value) {
echo "$value \n";
}
?>
输入字符串:
ABCcd
abCDE
aaaaBddDDDeeFFggJ
<强>输出:
ABC
cd
ab
CDE
aaaa
B
dd
DDD
ee
FF
gg
J
<强> Regex101 Demo
<强> Ideone Demo
答案 1 :(得分:0)
你可以从php尝试preg_match_all
,这会给你一个包含结果的数组。
preg_match_all('([A-Z]+|[a-z]+)',"ABCdeFGhAAAss", $matches);
var_dump($matches);
答案 2 :(得分:0)
尝试这个最简单的。
<?php
ini_set('display_errors', 1);
$input = array("ABCcd","abCDE");
foreach ($input as $value)
{
preg_match_all("#[A-Z]+|[a-z]+#", $value, $matches);
print_r($matches[0]);
}