0

私はテキストを持っています: (PRD:TLK-XX1388​​32)

ただし、一致するようには見えず、ブラケットが問題を引き起こしています。私は正規表現が初めてで、何度も一致を試みましたが失敗しました。

私はこれがうまくいくと思ったが、うまくいかなかった:\(PRD:[.]\)

私の理解は.間違っていますか?

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

(TLK-XX1388​​32 は、PRD: と角かっこがある限り、何でもかまいません。)

4

2 に答える 2

3

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

必要なものの正しい正規表現は次のようになります。

\(PRD:[^)]*\)

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

あなたがやろうとしたことは:

\(PRD:.*\)

ただし、一致しすぎる可能性があります。たとえば、次のように一致する可能性があります。

(PRD:FOO) (PRD:BAR)

は貪欲だから*です (可能な限り一致させようとします)。

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

\(PRD:.*?\)

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

于 2012-04-28T14:36:32.877 に答える
0

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

使用する:

\(PRD:[A-Z0-9-]*\)
于 2012-04-28T14:36:23.430 に答える