2011-07-06 1 views
6

検索文字列をクリーンアップしていますが、ピリオドを削除する必要がありますが、2桁の間に小数点を置いてください。例えばC#Regex - 2桁の間にない場合、小数点を削除します。

私は、文字列

599.75、タイガースを持っている場合。

strNewString = RegEx.Replace(strOrigString:

は、その後、私はそれがタイガース

私はのような行を考えていた

599.75として戻ってきたいと思います、strRegEx、string.Empty);

ここで、strRegExは削除するには一致しますが、私はどのように一致するかを考え出すのに苦労しています。それを取り巻くものもそうではありません。

答えて

7

のようなものを使用することができます。実際に入力した文字と一致するものではなく、一致が可能かどうかを判断するだけです。
ネガティブ先読みとネガティブシークビハインドを使用して、これと逆のことをすることができます。これがここでは適切です。 strRegExために、以下を使用すると、数字に囲まれていない期間にマッチします:

(?<!\d)\.(?!\d) 
+0

リンクされたチュートリアルのページがうまくいきました。ありがとう! – HackWeight

2

私は質問を読ん方法は、あなたはそれが両方の前後に数字が続かないのです場合にのみ、ドットを合わせたいです。たとえば、次のリストでは、最後の文字列を除くすべての文字列のドットを一致させたいとします。これは、文字列の両側に桁がある唯一の文字列です。

abc. 
.def 
x.y 
123. 
.456 
x.78 
90.x 
599.75

受け入れられた回答(?<!\d)\.(?!\d)は、最初の3文字列にのみ一致します。それはと同等です:

a dot, ((not preceded by a digit) AND (not followed by a digit)) 

私の解釈が正しければ、あなたはこのような何かしたい:と同等です

(?<!\d)\.|\.(?!\d) 

...:いずれの場合で

(a dot, not preceded by a digit) OR (a dot, not followed by a digit) 

を、それテキストマッチングについて話すときに可能な限り正確になるようにしています。特に、それにはルックアバウトを使用する必要があります。

関連する問題