我需要从文本中删除所有点,除非它们匹配模式[0-9] +。[0-9] + 例如,如果以下文字是我的输入:
abc. def. 123.45 ... 12.
输出应如下所示:
abc def 123.45 12
由于
答案 0 :(得分:1)
如果您使用的语言支持lookarounds,则可以使用此正则表达式:
(?<![0-9])\.|\.(?![0-9])
这匹配的数字不是以数字开头,或者后面没有数字。
C#示例:
string result = Regex.Replace(input, @"(?<![0-9])\.|\.(?![0-9])", "");
查看在线工作:ideone
答案 1 :(得分:0)
如果你的正则表达式支持负面外观(.NET确实令人难以置信),你可以使用它:
(?<!\d)\.|\.(?!\d)
这只会匹配在它们之前或之后具有非数字字符的点。只需用空字符串替换结果。
如果没有,那么你可以这样做:
(?|(^|\D)\.|\.($|\D))
并替换为$1
。这样做也是如此,但在比赛中包含了另外的角色。替换使匹配的角色重新到位。