2012-04-28 6 views
0

私が持っているテキスト:(PRD:TLK-XX1388​​32)、正規表現

私は試合を得るように見えることができないとブラケットが問題を引き起こしているが。私は正規表現には新しく、試合をうまくいかないように複数回試しました。

私はこれが機能するだろうと思ったが、いなかった。\(PRD:[.]\)

が間違っ.の私の理解ですか?

また、私は[a-zA-Z0-9\-]を試しましたが、これはいくつかの他の組み合わせと共に動作しませんか?

(TLK-XX1388​​32は限りそれはPRDを持っているとして、何もすることができます:。とブラケット)

答えて

3

はい、.のご理解が間違っているようです。これは "任意のchar"と解釈される特殊文字です。文字クラス(大括弧内)を除いて、「ただ.文字」を意味します。

何をしたいの正しい正規表現は次のようになります。

ここ
\(PRD:[^)]*\) 

[^)]は「)以外の任意の文字」を意味する文字クラスです。

\(PRD:.*\) 

しかし、それはあまりにも多く、例えば、それが一致する可能性が一致することができます:あなたがやろうやった

だった

(PRD:FOO) (PRD:BAR) 

*は欲張りなので(それが一致させようとしますできるだけ)。

あなたの正規表現エンジンがそれをサポートしている場合、あなたは(少し読みやすく)非貪欲バリアント試みることができる:

\(PRD:.*?\) 

最初のソリューションと機能的に同等です。

+0

[^]]内の追加の括弧は何をしますか? – Erbilacx

+0

zero0cool:いいえ、間違っています。 – ddaa

+0

これはうまくいきました。 – Erbilacx

0

あなたは複数の出現に一致するように指定するには、試合後に*を追加する必要があります。

用途:

\(PRD:[A-Z0-9-]*\)