更准确的说,定义一个周期是一个数的一部分意味着什么:它可能意味着它后面紧跟着一个数,所以它匹配5.4,但也匹配The average score of .4 was low.中的.4,而不是She only counted a total of 4.中的4.
用换行符替换所有句点,除非句点后面紧跟着一个数字
import re
text = '"I have .5 dollar. I need 5.4 dollar. But they only gave me 3."'
expression = re.compile(r'\.(?!\d)')
print(expression.sub('\n', text))
对于这个特定的示例,可以使用regex元字符\b来匹配单词的开头或结尾(单词边界)
编写有效的正则表达式首先要明确地表达您真正需要的东西。在您的情况下,看起来您希望:
用换行符替换所有句点,除非句点是数字的一部分
更准确的说,定义一个周期是一个数的一部分意味着什么:它可能意味着它后面紧跟着一个数,所以它匹配
5.4
,但也匹配The average score of .4 was low.
中的.4
,而不是She only counted a total of 4.
中的4.
用换行符替换所有句点,除非句点后面紧跟着一个数字
你的例子
\D(\.)
匹配的是:“匹配一个不是数字的字符,后跟一个文字.
”,这不是你想要替换的。你知道吗新的表达式
\.(?!\d)
匹配“匹配一个文字.
,但只有在它后面没有数字时才匹配。”它使用了一种称为“负向前看”的方法,这里有https://www.regular-expressions.info/lookaround.html您可以使用lookback:
在本例中,
(?<=\D)
断言文字.
前面的字符不是数字。你知道吗相关问题 更多 >
编程相关推荐