繁体   English   中英

python正则表达式添加 <br> 每第4期后

[英]python regexp add <br> after every 4th period

我想在第四个句点之后插入<br> ,但是当句点代表小数或字母缩写时不想要?

我已经经历了这个过程 ,但是由于我是regex的新手,所以有人可以指导我完成如何用Python编写等效项吗?

例如:

'I'm a Python programmer. I love to code. I'm a boy. I earn $100.39 , from which I spend $50 in xyz. I eat biscuits. I eat snacks.I eat pizza etc. '

预期O / P

'I'm a Python programmer. I love to code. I'm a boy. I earn $100.39 , from which I spend $50 in xyz.<br> I eat biscuits. I eat snacks.I eat pizza etc. '

说明-

由于. 在100.39中不被认为是句点,它实际上是一个十进制数,因此该字符串中的第4个句点是xyz

((?:.*?(?<![A-Z])\.(?=\s*[A-Z]|\s*$)){4})

尝试这个。 替换为\\1<br> 参见演示。

https://regex101.com/r/vD5iH9/50

import re
p = re.compile(r'((?:.*?(?<![A-Z])\.(?=\s*[A-Z]|\s*$)){4})')
test_str = "I'm a Python programmer. I love to cX.Yode. I'm a boy. I earn $100.39 , from which I spend $50 in xyz. I eat biscuits. I eat snacks.I eat pizza etc. "
subst = "\1<br>"

result = re.sub(p, subst, test_str)

如评论中所述,不能有万无一失的正则表达式可以执行您想要的操作,但是如果您的输入是固定的,那么您可以在某种程度上处理(如果您没有其他方法)。 这里

通过捕获多达的内容,我们发现了4个句子块. 然后将其替换为\\1br 但是. 不应为小数,因此请增加前瞻性,以便后续操作. 应该是空格和大写字母。 为了消除缩写,在其后面添加了一个外观. 后面不应有a capital字母。 但是,这有一个陷阱,因为如果在句子结尾出现这种情况,在US情况下将失败。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM