我想在PHP與preg_match_all捕捉每一種在自己的組:PHP預浸匹配,所有的捕捉
- 的章,節或頁面
- ,如果它的數字(或字母有一個)指定的章節,章節或頁面。如果他們之間有一個空格應該考慮到
- 詞「與」,「或」
牢記我想忽略所有的書名,並在項目的數量字符串可能是動態的,正則表達式應該下面所有的例子工作:
- 通道1和Sect2b
- 章4×unwantedtitle和教派5Y不必要的標題和Sect6 z和Ch7的或CH8
這是我設法拿出這麼遠:
$str = 'Ch 1 a unwantedtitle and Sect 2b unwanted title and Pg3';
preg_match_all ('/([a-z]+)(?=\d|\d\s)\s*(\d*)\s*(?<=\d|\d\s)([a-z]?).*?(and|or)?/i', $str, $matches);
Array
(
[0] => Array
(
[0] => Pg3
)
[1] => Array
(
[0] => Pg
)
[2] => Array
(
[0] => 3
)
[3] => Array
(
[0] =>
)
[4] => Array
(
[0] =>
)
)
預期的結果應該是:
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] =>
)
)
不確定你是否真的想用_one_ regex來做到這一點。用幾個看起來更好。 – fge
@fge我怎麼能夠使用幾個正則表達式,同時仍然保持一切按正確的順序?如果你有一個例子,將不勝感激。謝謝。 – user1307016
不在PHP中,我幾乎不知道它... – fge