1

パターン[0-9]+。[0-9]+に一致しない限り、テキストからすべてのドットを削除する必要があります。たとえば、次のテキストが私の入力である場合です。

abc. def. 123.45 ... 12. 

出力は次のようになります。

abc def 123.45 12

ありがとう

4

2 に答える 2

1

使用している言語がルックアラウンドをサポートしている場合は、次の正規表現を使用できます。

(?<![0-9])\.|\.(?![0-9])

これは、数字が前に付いていないか、数字が後に付いていないドットに一致します。

C#の例:

string result = Regex.Replace(input, @"(?<![0-9])\.|\.(?![0-9])", "");

オンラインで動作することを確認してください:ideone

于 2012-10-30T14:47:10.967 に答える
0

正規表現フレーバーがネガティブルックアラウンドをサポートしている場合(.NETは非常に優れています)、これを使用できます。

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

これは、前後に数字以外の文字が含まれるドットにのみ一致します。結果を空の文字列に置き換えるだけです。

そうでない場合は、これを行うことができます:

(?|(^|\D)\.|\.($|\D))

そして、に置き換え$1ます。これは同じことをしますが、マッチにその追加のキャラクターが含まれます。置換により、一致した文字が元の場所に戻されます。

于 2012-10-30T14:49:00.977 に答える