Python re.sub() 带点

Python re.sub() with dots

我想在文本中的点前后放置一个 space,但前提是它不是日期的一部分。 到目前为止我有这个,我想我必须用 \D 做点什么。但它不仅返回点之前的字母还返回点:

string = re.sub("\.", " . ", string)

例如:

输入文字:1992.01.04是我的生日

要求输出:1992.01.04 is my birthday .

字符串点结束前有一个space

其他问题同冒号和时间,

输入文本:时间是11:48,报告人:Tom.

所需输出:时间为 11:48,报告人:Tom.

在冒号'reported by'之前的文本'reported by'之后有一个space

提前致谢

您可以使用这个正则表达式来检查 dot/colon 是否被数字包围并将其替换为 ' \1 '

(?<!\d\d)([.:])(?!\d+)

演示,https://regex101.com/r/hr6slz/4

此正则表达式适用于冒号和点,您可以将其替换为“\1”

您需要 _ 正面回顾 assertion._(或负面,\d)。查看 https://docs.python.org/3/library/re.html 了解详情。

re.sub("(?<=\D)\.(\D?)", " . ", '1992.01.04 is my birthday.')