我想匹配所有错误使用点的情况,如下所示:
我的朋友饿了。我很开心
目标是获得:
我的朋友饿了。我很开心
如何使用Regex和Python做到这一点?
我能够使用以下方法匹配正确的案例:
indeces=[i for i, x in enumerate(incd) if x == w1 or x == w2]
我也想替换错误的内容。正确的代码(我尝试使用re.sub,但是使用先前的正则表达式,它也替换了圆点后单词的第一个字母)
建议?
答案 0 :(得分:1)
您可以做的是匹配一个空白字符和一个点,并使用正向前行(?=[a-zA-Z])
断言右边的是a-zA-Z并用点和空格代替:
\s\.(?=[a-zA-Z])
例如
import re
regex = r"\s\.(?=[a-zA-Z])"
result = re.sub(regex, ". ", "My friend is hungry .I am happy")
if result:
print (result) # My friend is hungry. I am happy
或者如Tim Biegeleisen在评论中所建议,一个更通用的选择是:
\s+\.(?=\w)
答案 1 :(得分:0)
尝试一下:
import re
test_str = "My friend is hungry .I am happy"
regex = r"\s+\." # add `(?<=\w)` for lookahead as indicated by other answer
subst = ". "
result = re.sub(regex, subst, test_str, 0, re.MULTILINE)
if result:
print (result)