多次出現我有以下字符串:正則表達式PHP的preg_match字符串
findByHouseByStreetByPlain
我如何能匹配值後,每個 「通過」。我已經設法找到第一個「By」的價值,但我無法得到它,它給了我「After」之後的值的所有匹配。
多次出現我有以下字符串:正則表達式PHP的preg_match字符串
findByHouseByStreetByPlain
我如何能匹配值後,每個 「通過」。我已經設法找到第一個「By」的價值,但我無法得到它,它給了我「After」之後的值的所有匹配。
Thsi正則表達式應該爲你工作:
<?php
$ptn = "#(?:By([A-Za-z]+?))(?=By|$)#";
$str = "findByByteByHouseNumber";
preg_match_all($ptn, $str, $matches, PREG_PATTERN_ORDER);
print_r($matches);
?>
這將是輸出:
Array
(
[0] => Array
(
[0] => ByByte
[1] => ByHouseNumber
)
[1] => Array
(
[0] => Byte
[1] => HouseNumber
)
)
有些用前瞻的一定會做到
By(.*?)(?=By|$)
在PHP中,這成爲
preg_match_all('/By(.*?)(?=By|$)/', $subject, $result, PREG_SET_ORDER);
for ($matchi = 0; $matchi < count($result); $matchi++) {
for ($backrefi = 0; $backrefi < count($result[$matchi]); $backrefi++) {
# Matched text = $result[$matchi][$backrefi];
}
}
我的字符串是不同的:
HouseByStreetByPlain
然後我用下面的正則表達式:
<?php
$ptn = "/(?<=By|^)(?:.+?)(?=(By|$))/i";
$str = "HouseByStreetByPlain";
preg_match_all($ptn, $str, $matches);
print_r($matches);
?>
輸出:
Array
(
[0] => Array
(
[0] => House
[1] => Street
[2] => Plain
)
[1] => Array
(
[0] => By
[1] => By
[2] =>
)
)
顯示你已經嘗試過的情況。 – flowfree