1

PHPJSで区切り記号を除外する正規表現を使用して、区切り記号のペアの間でコンテンツを選択するベスト プラクティスは何ですか?

aassssd [dddd] fff ffff (delimiter=[..])   output -> dddd
aassssd QddddQ fff ffff (delimiter=Q)      output -> dddd
aassssd RddddQ fff ffff (delimiters=R...Q) output -> dddd
aassssd "dddd" fff ffff (delimiter=")      output -> dddd

懸念は区切り文字を除外することです。全体を選択するのは比較的簡単です。

/\"[^"]\"/ //for  line four

ソリューションがスケーラーを返すことが望ましいです。理想的な答えは、 http: //regexpal.com/ でテストできる RegEx のみを使用します。

4

2 に答える 2

1

.*?最後の区切り文字まですべてをキャプチャする貪欲でないものを使用します。

$str = 'aassssd QddddQ fff ffff';
preg_match_all('/[Q](.*?)[Q]/', $str, $out, PREG_PATTERN_ORDER);
var_dump($out); 

生成します:

Array
(
    [0] => Array
        (
            [0] => QddddQ
        )

    [1] => Array
        (
            [0] => dddd
        )

)

[および]区切り文字をエスケープする必要があります。/[\[](.*?)[\]]/

これは単一のキャプチャ グループを使用する(.*?)ため、必要な出力は出力配列の位置 1 にあります。

于 2012-05-23T13:30:00.460 に答える
0
aassssd [dddd] fff ffff (delimiter=[..])   output -> dddd

PHPの正規表現:

(?<=\[).*?(?=\])

JSの正規表現(PHPでも機能します):

[^\[]*?(?=\])
于 2012-11-23T11:58:27.250 に答える