更改大小写时拆分字符串
Split string when change case
我想在改变大小写时拆分字符串。
例如我有两个字符串:ABCcd
和 abCDE
。
我会在第一个上得到 ABC
和 cd
,在第二个上得到 ab
和 CDE
。小写和大写的数量未定义。
我已经尝试使用 preg_match
和 preg_split
,但我在定义正确的正则表达式时遇到了一些问题。
也许匹配零宽度是一种选择。
正则表达式: (?<=[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
您可以尝试 php 中的 preg_match_all
,这将为您提供一个包含结果的数组。
preg_match_all('([A-Z]+|[a-z]+)',"ABCdeFGhAAAss", $matches);
var_dump($matches);
试试这个最简单的。
<?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]);
}
我想在改变大小写时拆分字符串。
例如我有两个字符串:ABCcd
和 abCDE
。
我会在第一个上得到 ABC
和 cd
,在第二个上得到 ab
和 CDE
。小写和大写的数量未定义。
我已经尝试使用 preg_match
和 preg_split
,但我在定义正确的正则表达式时遇到了一些问题。
也许匹配零宽度是一种选择。
正则表达式: (?<=[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
您可以尝试 php 中的 preg_match_all
,这将为您提供一个包含结果的数组。
preg_match_all('([A-Z]+|[a-z]+)',"ABCdeFGhAAAss", $matches);
var_dump($matches);
试试这个最简单的。
<?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]);
}