我正在處理一個Php腳本。但不幸的是我在REGEX部分真的很窮。我想提取這樣的東西。在首次出現整數之前提取一段字符串
我給該字符串是:
的Hello World! 2016祝你有美好的一天!
現在,我想它到一個數組拆分爲
{ 「1」: 「世界,你好!」, 「2」: 「有一個漂亮的前一天」}
我想在遇到Integer時將其分開。它只是,我需要一個正則表達式。有人可以幫我解決這個問題嗎?另外,請給我建議一些可以幫助我學習REGEX的鏈接。提前感謝您。
我正在處理一個Php腳本。但不幸的是我在REGEX部分真的很窮。我想提取這樣的東西。在首次出現整數之前提取一段字符串
我給該字符串是:
的Hello World! 2016祝你有美好的一天!
現在,我想它到一個數組拆分爲
{ 「1」: 「世界,你好!」, 「2」: 「有一個漂亮的前一天」}
我想在遇到Integer時將其分開。它只是,我需要一個正則表達式。有人可以幫我解決這個問題嗎?另外,請給我建議一些可以幫助我學習REGEX的鏈接。提前感謝您。
最簡單的方法是使用preg_split()
。很明顯它做什麼(用正則表達式分割字符串),併產生符合您要求的輸出:
php > $s = "Hello World! 2016 Have a nice day ahead!";
php > $pattern = "/\s+\d+\s+/";
php > $a = preg_split($pattern, $s);
php > print_r($a);
Array
(
[0] => Hello World!
[1] => Have a nice day ahead!
)
唯一的區別是,你的問題要求1爲基礎的索引,而這個答案提供0基於索引。你應該更喜歡基於0的索引,因爲這是默認的PHP序列即數組,字符串等
提供資源的鏈接已經超出了SO範圍,但是,你可以嘗試:
或從簡單的谷歌小號任何成千上萬人的可達目錄操作搜索。
或者,如果您知道定界字符串的字面值,你可以使用explode()
:
php > $s = "Hello World! 2016 Have a nice day ahead!";
php > $delimiter = " 2016 ";
php > $a = explode($delimiter, $s);
php > print_r($a);
Array
(
[0] => Hello World!
[1] => Have a nice day ahead!
)
/^([\D]+)\s+\d+\s+(.*)$/
應該這樣做。
你得到所有的非數字,然後數字與他們周圍的空白,然後剩下的。
全部放在一起:
$string = 'Hello World! 2016 Have a nice day ahead!';
preg_match('/^([\D]+)\s+\d+\s+(.*)$/', $string, $match);
// $match[1]: Hello World!
// $match[2]: Have a nice day ahead!
非常感謝你!這是有道理的。 Bt我不會標記你的答案是正確的,直到我的兩個問題都得到回答。 –
@Milind使用http://regexone.com/和http://regexr.com/來學習正則表達式。 –
我喜歡這張備忘單:http://www.cheatography。com/davechild/cheat-sheets/regular-expressions /,並通過https://regex101.com/進行快速測試 –
1.爲什麼它必須是一個正則表達式? 2.你在拆分什麼,固定字符串「2016」? – mhawke
字符串2016未固定。它可以是任何整數。 –
請將完整的規格 - 拆分的基礎 - 添加到問題中。 – Praveen