2017-05-14 71 views
-1

更改案例時,我想拆分字符串。更改案例時拆分字符串

例如我有兩個字符串:ABCcdabCDE

我就導致ABCcd第一和abCDE第二。沒有定義小寫和大寫的數字。

我已經試過preg_matchpreg_split但我有一些問題來定義正確的正則表達式。

+2

那麼是什麼問題?請分享您嘗試的代碼並解釋其中的錯誤。 –

+0

我試過像'/([az] + [AZ] +)|([AZ] + [az] +)/'或'/([az])?([AZ])/'但不同的正則表達式,都是錯誤的。 – Azkidenz

+0

如果你之前發佈過,你可以得到比「嘗試這個」更好的答案。 –

回答

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

} 
+0

非常感謝!我選擇了你的解決方案,因爲我認爲它是最乾淨的!再次感謝。 – Azkidenz

+0

@Azkidenz歡迎朋友.... :) –

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

非常感謝您的回答! – Azkidenz

0

您可以嘗試preg_match_all從PHP,會給你的結果的數組。

preg_match_all('([A-Z]+|[a-z]+)',"ABCdeFGhAAAss", $matches); 
var_dump($matches); 

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