2017-09-27 3 views
2

コロンで終わる大文字の文字列と一致するようにRegExが必要です。文字列にはスペース、数字、ピリオドを含めることができます。もしそのよう:大文字の後ろにコロンが続くものを見つけるには

mystring = "I have a C. GRAY CAT2:" 

私は "C. GRAY CAT2を:" マッチング、番号9を返すようにColdFusion式

REFind("[A-Z0-9. ][:]",mystring) 

をしたいです。代わりに、コロンだけにマッチする番号21が返されます。私は正規表現の修正が問題を解決することを願っています。もちろん、私は多くの、多くのことを試みました。 ありがとうございました!

+1

おそらく '[A-Z] [A-Z0-9。 ] *: '。 –

答えて

2

私はregex demo

詳細

  • [A-Z0-9]を参照してください

    [A-Z0-9][A-Z0-9. ]*: 
    

    使用することをお勧め - 最初の文字が他の、数字で削除することができた場合に大文字または数字を( 0-9

  • [A-Z0-9. ]* - 0以上の大文字/数字、.またはスペース
  • : - コロン。

バリエーション

部分文字列のような345:にマッチするのを避けるが、まだもののよう23 VAL:を許可し、

\b(?=[0-9. ]*[A-Z])[A-Z0-9][A-Z0-9. ]*: 

を使用するにはthis regex demoを参照してください。ここでは、\b(?=[0-9. ]*[A-Z])が最初に単語境界に一致し、その後、正の先読み(?=[0-9. ]*[A-Z])は、0以上の数字、スペースまたはドットの後に大文字があることを確認します。

あなたはすなわちI have a 22 C. GRAY CAT2:のうち、シーケンスの開始時に番号を期待していない場合は、Sebastian's suggestiondemo)を使用し、C. GRAY CAT2を抽出する必要があります。

+0

ありがとう、Wiktor。セバスチャンの提案は、文字列の先頭に "I"を抽出しました。これは、必要なものではありません。一致する文字列には小文字の "have a"が含まれているためです。 – Commata

+0

おっと、答えの冒頭にいくつかの文字列があり、私は終わらなかった。混乱を避けるために削除されました。 –

+0

Wiktor(at):私はまだあなたの元の提案を使用していますが、私の情報源が128-255の文字を使用することがありますので、MÜNCHEN:がMÃœNCHENとして出現しているので、RegExがNCHEN: RegExは大文字のように特殊文字を扱うことができるので、「特殊文字」を含む文字列全体と一致することができますか? – Commata

0

ドイツ語の特殊文字をカバーするために、私自身の質問に対する回答を改訂しました。

[A-Z][A-Z0-9.ÜÄÖß ]*: 

これが動作しているように見えます、しかし、ドイツ人は最近、まだほとんどのキーボードには確かにないので、しばらくの間、正規表現のために問題になることはありません彼らのアルファベットに資本ßを追加しました。

関連する問題