"()"内のテキストのみを取得するには たとえば、 "en"から "en"だけを入力します。 このパターンは"/\(.[a-z]+\)/i"
と書かれていますが、 "()"も得られます。正規表現は文字列の一部を取得
ありがとうございます。
"()"内のテキストのみを取得するには たとえば、 "en"から "en"だけを入力します。 このパターンは"/\(.[a-z]+\)/i"
と書かれていますが、 "()"も得られます。正規表現は文字列の一部を取得
ありがとうございます。
<?php
$string = '(en) English';
preg_match('#\((.*?)\)#is', $string, $matches);
echo $matches[1]; # en
?>
$matches[0]
(
と)
間この場合(.*?)
全体マッチストリング、$matches[1]
する最初基を含有するであろう。
それは仕事をする必要があります。
"/\(([a-z]+)\)/i"
最も簡単な方法は、"/\(([a-z]+)\)/i"
を取得し、必要なものを取得するためにキャプチャグループを使用することです。誰もが他の
OR
を提案しているよう
そうでない場合、あなたは、先読みに取得する必要が見える尻
は、あなたは、あなたのマッチがある場合は、あなたの試合にのみ確認することができますキャプチャグループを使用することができます「(」の後に「)」が付いています。それはルックアヘッドとルックバックと呼ばれています。
"/(?<=\().[a-z]+(?=\))/i"
あなたの正規表現のドットは何ですか、私は間違ってそこに仮定します。
第2に、キャプチャグループの回答(これは完璧です!)の代わりに、lookbehindとlookaheadを使って解決する方法です。
(?<=\()[a-z]+(?=\))
ここのトリックにそれを参照してくださいされており、それらの前後参照は、彼らが存在する場合、彼らはちょうどチェックし、内部の文字と一致していません。したがって、これらの文字は結果に含まれません。
(?<=\()
その位置の前の文字(
ため
(?=\)
をチェックするアサーションの背後にある正見、正先見アサーション、先後読み/先読み私の意見ではそれより読みやすくその位置
の文字
(
をチェックします。 – Powertieke