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中的类似搜索变得很棘手: