我写这篇文章是为了找到并删除除字母,空格,数字,百分数和点之外的所有字符。
Regex.Replace("some string", @"[^a-zA-Z0-9\ \%\.]", "");
实际上,这会找到除字母/空格/数字/百分数/点之外的所有字符, 我想改变它如下:
无论如何都要找到所有特殊字符(字母/空格/数字/百分数除外),只有当周围没有数字时才能找到点。
我该怎么做?
答案 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");