1
我想用PHP中的preg_match_all在每個組中捕獲它們中的每一個。PHP preg-match-all正則表達式
- 的章,節,或頁面
- 的數字(或字母,如果它有一個)將指定的章,節,或網頁的。如果他們之間有一個空格應該考慮到
- 詞「與」,「或」
牢記字符串中的項目數量可以是動態的,正則表達式應該
- Ch1和Sect2b
- 章4×blahunwantedtext和派5Y和Sect6 z和Ch7的或CH8
此:下面所有的實施例中工作是我設法到目前爲止:
<?php
$str = 'Ch 1 a and Sect 2b and Pg3';
preg_match_all ('/([a-z]+)([\s]?[0-9]+)([\s]?[a-z]*)([\s]?and*[\s]?)/is', $str, $matches);
Array
(
[0] => Array
(
[0] => Ch 1 a and
[1] => Sect 2b and
)
[1] => Array
(
[0] => Ch
[1] => Sect
)
[2] => Array
(
[0] => 1
[1] => 2
)
[3] => Array
(
[0] => a
[1] => b
)
[4] => Array
(
[0] => and
[1] => and
)
)
我無法匹配我的數組中的字符串(Pg3)的最後部分。
預期的結果應該是:
Array
(
[0] => Array
(
[0] => Ch 1 a and
[1] => Sect 2b and
[2] => Pg3
)
[1] => Array
(
[0] => Ch
[1] => Sect
[2] => Pg
)
[2] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[3] => Array
(
[0] => a
[1] => b
[2] =>
)
[4] => Array
(
[0] => and
[1] => and
[2] =>
)
)
添加一些例子,您的文章。擁有「輸入 - >預期結果」可以更輕鬆地計算出100倍的問題。 – Supericy
@Supericy預期結果已添加。 – user1307016
@Supericy只是想知道如果有一些額外的不需要的文本,比如$ str ='Ch 1 a blahblahdontwant和Sect 2b和Pg3',我需要更改爲正則表達式以獲得相同的結果嗎? – user1307016