需要正则表达式的帮助,除了字母/数字之外,删除所有字符,除去小数点以外的点

时间:2015-06-06 19:54:13

标签: c# regex

我写这篇文章是为了找到并删除除字母,空格,数字,百分数和点之外的所有字符。

Regex.Replace("some string", @"[^a-zA-Z0-9\ \%\.]", "");

实际上,这会找到除字母/空格/数字/百分数/点之外的所有字符, 我想改变它如下:

无论如何都要找到所有特殊字符(字母/空格/数字/百分数除外),只有当周围没有数字时才能找到点。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

我从你的正则表达式中删除了点,并在字符串上应用了一个额外的正则表达式,如下所示:

(?<=\D)\.(?=\D)

只有在没有任何数字的情况下才会删除点。

如果你想删除3.以及上面的内容:

(?<=\D)\.

如果你想删除.3:

\.(?=\D)

如果要删除所有1.3,3和.3,则应用上述两个,不需要第一个,因为它变得多余。

说明:

(?<=...)(?=...)分别是lookbehind和lookahead,这意味着它会检查它,但不会将其包含在替换中。

\D表示它不是数字。 \d表示它是一个数字。

\.表示它是一个点,必须进行转义,因为正则表达式中的.表示任何字符。

答案 1 :(得分:-1)

这个怎么样

            string test = "abc. 1.2";
            string pattern = "([a-zA-Z])(\\.)";

            Regex expr = new Regex(pattern);
            string output = expr.Replace(test, "$1");​