1. 程式人生 > 其它 >[圖解]Python用正則表示式匹配ABAC和AABB的詞語

[圖解]Python用正則表示式匹配ABAC和AABB的詞語

#這幾天看到有網友在問這個問題,我翻找了下資料,很多講的不是特別的明白,所以我稍微改了下,希望能幫到有需要的人
from
re import findall text = '''行屍走肉、金蟬脫殼、百裡挑一、金玉滿堂、 背水一戰、霸王別姬、天上人間、不吐不快、海闊天空、 情非得已、滿腹經綸、兵臨城下、春暖花開、插翅難逃、 黃道吉日、天下無雙、偷天換日、兩小無猜、臥虎藏龍、 珠光寶氣、簪纓世族、花花公子、繪聲繪影、國色天香、 相親相愛、八仙過海、金玉良緣、掌上明珠、皆大歡喜、 浩浩蕩蕩、平平安安、秀秀氣氣、斯斯文文、高高興興''' print("全部詞語: ", text) pattern = r'
(((.).\3.)|((.)\5(.)\6))' print("匹配ABAC和AABB的詞語:", list(i[0] for i in findall(pattern, text)))
#得到結果如下:
全部詞語: 行屍走肉、金蟬脫殼、百裡挑一、金玉滿堂、 背水一戰、霸王別姬、天上人間、不吐不快、海闊天空、 情非得已、滿腹經綸、兵臨城下、春暖花開、插翅難逃、 黃道吉日、天下無雙、偷天換日、兩小無猜、臥虎藏龍、 珠光寶氣、簪纓世族、花花公子、繪聲繪影、國色天香、 相親相愛、八仙過海、金玉良緣、掌上明珠、皆大歡喜、 浩浩蕩蕩、平平安安、秀秀氣氣、斯斯文文、高高興興
匹配ABAC和AABB的詞語: [
'不吐不快', '繪聲繪影', '相親相愛', '浩浩蕩蕩', '平平安安', '秀秀氣氣', '斯斯文文', '高高興興']

 

詳解見下圖,不同子項的組成,使“|”前面形成了ABAC,後面形成了ABAB。而“|”為“或”的意思,所以達到了篩選ABAC或AABB的詞語的效果。(PS:其實“|”左邊的B和C是“.”,所以也可能為AAAC,ABAA,但是隻有的成語很少吧)