0

だから私はこの正規表現を持っています:

$text = '"sadfsafsafsafsaf"';
$text2 = '"sadfsafsafsafsaf';
$matches = array();

preg_match('/"(.+)"?/', $text, $matches);

この場合、引用符なしでsadfsafsafsafsafをキャプチャするつもりです。したがって、どちらの場合も、一致する出力をsadfsafsafsafsafにする必要があり$textます$text2preg_match()$matches[1]

ただし、を使用$textした場合、一致の値は代わりにsadfsafsafsafsafになります(つまり、最後に別の引用符があります)

どちらの場合もsadfsafsafsafsafになるように正規表現を変更する方法はありますか?

注:誰かがなぜ単に使用しないtrim()のかと尋ねる前に...それは私が最初の外側の引用符を削除したいからです。

4

4 に答える 4

0

[^"]+隣接する非引用符をいくつでもキャプチャします。

于 2013-01-30T02:20:40.640 に答える
0

に変更.+して、パターンの最後にを.*追加してみてください。$あなたが抱えている問題は.+、末尾の引用符を含め、可能な限りすべてに一致することです。後続の句、"?は、疑問符のためにオプションであるため、無視されます。

[^"]+これは「二重引用符ではない空でない文字列」を意味するため、使用も機能します。

于 2013-01-30T02:20:54.693 に答える
0

文字通りの疑問符(または正規表現エンジンに固有のその他の記号)を探したい場合は、文字をエスケープする必要があります。\?

于 2013-01-30T02:21:35.567 に答える
0

使用OR

/"(.*)"|(.*)/

コートが見つからない場合は、コートの内側または外側にテキストを取得します。

于 2013-01-30T02:24:50.367 に答える