Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
パターン[0-9]+。[0-9]+に一致しない限り、テキストからすべてのドットを削除する必要があります。たとえば、次のテキストが私の入力である場合です。
abc. def. 123.45 ... 12.
出力は次のようになります。
abc def 123.45 12
ありがとう
使用している言語がルックアラウンドをサポートしている場合は、次の正規表現を使用できます。
(?<![0-9])\.|\.(?![0-9])
これは、数字が前に付いていないか、数字が後に付いていないドットに一致します。
C#の例:
string result = Regex.Replace(input, @"(?<![0-9])\.|\.(?![0-9])", "");
オンラインで動作することを確認してください:ideone
正規表現フレーバーがネガティブルックアラウンドをサポートしている場合(.NETは非常に優れています)、これを使用できます。
(?<!\d)\.|\.(?!\d)
これは、前後に数字以外の文字が含まれるドットにのみ一致します。結果を空の文字列に置き換えるだけです。
そうでない場合は、これを行うことができます:
(?|(^|\D)\.|\.($|\D))
そして、に置き換え$1ます。これは同じことをしますが、マッチにその追加のキャラクターが含まれます。置換により、一致した文字が元の場所に戻されます。
$1