2016-10-13 4 views
1

私はConverterを持っています。私はどこでRegexを使ってConverterParametersを分割したいのですか?今、私は2つのオペレータにマッチ比較すると数でこれを分割したいの例コンバータでRegexを使用する

10.4565 

ため、

< 
<= 
> 
>= 
== 
!= 

とその後NUMER:以下は、それが持つ有力だ、場合することができ。これどうやってするの?

([<>]|[<>=!]=)\s*([0-9.]+) 

ユアーズはいくつかの問題だった:

((==)|(!=)|(>)|(<)|(>=)|(<=))|((?<=[><(==)(!=)(>=)(<=)])[0-9.]+) 

答えて

1

あなたは、この正規表現を使用することができます。 私は、これは試してみました((==)|(!=)|(>)|(<)|(>=)|(<=))|((?<=[><(==)(!=)(>=)(<=)])[0-9.]+)

  • [><(==)(!=)(>=)(<=)]がcharクラスですが、それは同等です〜[(!><=)]
  • 見た目は役に立たなかった。

Regex r = new Regex(@"([<>]|[<>=!]=)\s*([0-9.]+)"); 
string s = @"<= 10.4568"; 
var matches = r.Matches(s); 

foreach(Match match in matches) 
{ 
    Console.WriteLine($"Operator {match.Groups[1]}, number: {match.Groups[2]}"); 
} 

の出力は以下となります。

オペレータ< =、番号:10.4568

0

これが最も簡単かもしれません:

(==|!=|>|<|>=|<=)\s*([0-9\.-]+) 

"(operator)(number)"のような文字列と一致します。ここで[OK]を

+1

'.'はcharクラスの中のドットを意味するので、エスケープする必要はありません –

-1

は、私がこれまで

^(<=|>=|!=|==|>|<)(-?\d*\.?\d*$) が、これは無効です

!=-12322.645642 
==12322 
>=12 
>=0.1 

でテスト作ってみたものです:これも無効である==0..21

>--0.01 

また、whを許可したい場合あなたがこれを行うことができるオペレータと番号の間のスペース:^(<=|>=|!=|==|>|<)(\s?-?\d*\.?\d*$)

関連する問題