簡體   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