regex 带点的Python re.sub()

wvyml7n5  于 2023-01-27  发布在  Python
关注(0)|答案(2)|浏览(151)

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

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

例如:
输入文本:

1992.01.04 is my birthday.

所需输出:

1992.01.04 is my birthday .

字符串.结尾前有一个空格。
另一个问题是冒号和时间
输入文本:

The time is 11:48, reported by: Tom.

所需输出:

The time is 11:48, reported by : Tom.

文本'reported by'之后冒号之前有一个空格。

nxagd54h

nxagd54h1#

您可以使用此正则表达式,该正则表达式执行向前负查找和向后负查找,以检查点/冒号是否被数字包围,并将其替换为' \1 '

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

演示,https://regex101.com/r/hr6slz/4
此正则表达式适用于冒号和点,因为您可以将其替换为' \1 '

0md85ypi

0md85ypi2#

您需要_ positive lookbehindAssert._(或negative,对于\d)。有关详细信息,请查看https://docs.python.org/3/library/re.html

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

相关问题