更改案例

时间:2017-05-14 16:12:59

标签: php regex preg-match preg-split

我希望在更改案例时拆分字符串。

例如,我有两个字符串:ABCcdabCDE

我会在第一个结果ABCcd以及第二个abCDE结果。未定义小写和大写的数量。

我已经尝试使用preg_matchpreg_split,但我在定义正确的正则表达式时遇到了一些问题。

3 个答案:

答案 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);

示例:https://ideone.com/qITPI4

答案 2 :(得分:0)

尝试这个最简单的。

Try this code snippet here

<?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]);

}