Python 替换字符之间的点

Python 替换字符之间的点,python,regex,Python,Regex,所以我想在点后面没有空格的情况下,替换字符串中的点。我一直认为用正则表达式可以很容易地做到这一点,但我一直没能做到 我有模式,我希望它们是: h.e.ll.o w.o.r.l.d:hello world h.e.ll.o w.o.r.l.d:hello world 你好。世界:你好。世界 我尝试了以下模式: \w+(\.)+\w+ \w+(\.+\w+) \w+\.+\w+ 我总是得到这样的信息:he.ll.o wo.rl.d 我使用python的re模块匹配并替换为以下代码: >&

所以我想在点后面没有空格的情况下,替换字符串中的点。我一直认为用正则表达式可以很容易地做到这一点,但我一直没能做到

我有模式,我希望它们是:

  • h.e.ll.o w.o.r.l.d
    hello world
  • h.e.ll.o w.o.r.l.d
    hello world
  • 你好。世界:
    你好。世界
我尝试了以下模式:

\w+(\.)+\w+
\w+(\.+\w+)
\w+\.+\w+
我总是得到这样的信息:
he.ll.o wo.rl.d

我使用python的
re
模块匹配并替换为以下代码:

>>> re.sub(r'\w+\.+\w+', lambda x: x.group(0).replace('.', ''), 'h.e.ll.o w.o.r.l.d')
'he.llo wo.rl.d'

在所有模式中,您在点之后使用一个字符,因此在下一次迭代中没有机会将其与第一个
\w+
匹配(因为它必须至少使用一个单词字符)

要修正您的方法,您可以匹配1+个单词字符,然后重复1+次
,然后再匹配1+个单词字符:

re.sub(r'\w+(?:\.+\w+)*', lambda x: x.group(0).replace('.', ''), s)
这是你的电话号码

另一种删除单词字符之间的
方法是

re.sub(r'\b\.\b', '', s)
看。这里,
仅在单词字符内匹配

或者,您可以使用此方法匹配任何未包含空格的

re.sub(r'(?<!\s)\.(?!\s)', '', 'h.e.ll.o w.o.r.l.d')

re.sub(r')(?这将是我的方法

re.sub(r'\.(?=\w)',“h.e.ll.o.w.o.r.l.d')

  • \。
    一个点
  • (?=\w)
    向前看:检查点后是否有\w

这个正则表达式在
'中失败。h.e.ll.o.w.o.r.l.d'
我能用,谢谢。我在想另一种方法,这使得Java中的类似搜索变得很棘手: