[英]How to match part of a string multiple overlapping times with regex?
我需要一個 Python 正則表達式多次匹配字符串的一部分:
我的字符串: abcd
我想有這樣的組:
ab
bc
cd
有人知道如何做到這一點嗎?
您可以使用前瞻來獲得重疊匹配:
(?=\b([A-Za-z]+-[A-Za-z]+)\b)
請參閱正則表達式演示。
詳情:
(?=
- 與緊隨其后的位置匹配的正向前瞻的開始
\b
- 單詞邊界([A-Za-z]+-[A-Za-z]+)
- 第 1 組:一個或多個 ASCII 字母, -
,一個或多個 ASCII 字母\b
- 單詞邊界)
- 前瞻結束。 在 Python 中,將其與re.findall
一起使用:
import re
text = "aaaa-bb-ccc-dd"
print( re.findall(r'(?=\b([A-Z]+-[A-Z]+)\b)', text, re.I) )
# => ['aaaa-bb', 'bb-ccc', 'ccc-dd']
請參閱Python 演示。 注意我在代碼中將[A-Za-z]
更改為[AZ]
,因為我在re.I
選項的幫助下使正則表達式匹配不區分大小寫。 確保您使用的是r
字符串文字前綴,否則\b
將被視為退格字符\x08
,而不是單詞邊界。
變化
(?=\b([^\W\d_]+-[^\W\d_]+)\b)
- 匹配任何 Unicode 字母(?=(?<?[^\W\d_])([^\W\d_]+-[^\W\d_]+)(?![^\W\d_]))
- 匹配任何 Unicode字母和邊界是任何非字母
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.