2017-09-06 24 views
1

正規表現を使用して、 'e'として間違って認識されているかどうかを判断しています(例:Te 23,4はT€23,4またはe23 、4は23,4ユーロなど)。私の場合、式は^(T|(?i)(Mio)|(Million)(?-i))?()?[e]()?\d*$です。しかし、私の表現がうまくいかないケースが1つあります。 'e'( "e")の後にANDの前に空白がある場合、式は機能しません。正規表現:charの前後の空白を無視する

このケースが考慮されないように表現を拡張するにはどうすればよいですか?少なくとも「e」の後にはORの前に文字がなければならないと思うが、それを私の表現にどのように実装するのか分からない。

この正規表現(((.)[e])|([e](.)))は空白の問題で動作しますが、両方の式をどのようにマージできますか?あなたの正規表現で

+2

()?オプションの空白を持つことができると言っています。あなたはただ怠け者で、2つの正規表現を持つことができます。 (τi)(τi)(τi)(τi)(τi)(τi) -i))?()?[e] \ d * $ – sniperd

+1

多分['(^ | T |(?i:Mio | Million))(?)e(?)\ d +'](https:// regex101 .com/r/1wCKNb/2)?要件が明確でないため、信頼性の高いソリューションを提供することは困難です。 –

+0

@sniperdなんて恥ずかしいよ!時にはそれはとても簡単です!ありがとうございました !! – Jannik

答えて

1

は、最初の交替基は、オプション(?マッチ1又は回)、ならびに桁マッチング部(*マッチ0以上の文字)です。

ので、ポイントはそれらを義務にすることです:

(^|T|(?i:Mio|Million))(?)e(?)\d+ 
^^        ^^ 

regex demoを参照してください。 ^は交替グループに移動され(ビットが強化され)、\d+(以上)で定量化されます。

詳細

  • (^|T|(?i:Mio|Million)) - 選択肢のうちの1つ:
    • ^ - 文字列の先頭
    • TからT
    • (?i:Mio|Million) - 2つの選択肢を一致修飾基大文字小文字を区別しない方法:MioまたはMillion
  • (?) - 任意空間
  • eからe
  • (?) - 任意空間
  • \d+から1桁以上。
+1

今すぐ取得しました:)ありがとうございました! – Jannik

関連する問題