1

次の文字列があります。

findByHouseByStreetByPlain

各「By」の後の値にどのように一致させることができますか。最初の「By」値を見つけることができましたが、「By」の後の値に一致するすべての値を取得することができません。

4

4 に答える 4

3

この正規表現はあなたのために働くはずです:

<?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
        )

)
于 2012-06-11T12:42:47.287 に答える
1

先読みのいくつかの使用はそれを行います

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];
    } 
}
于 2012-06-11T12:32:45.830 に答える
0

以下のコードを試してください。

$pattern = "/[^By]+/";
$string = "findByHouseByStreetByPlain";
preg_match_all($pattern, $string, $matches);
var_dump($matches);
于 2012-06-11T12:31:43.627 に答える