如果它們是大寫的,如何從單詞中提取最后三個字符?
a = "aaaAAA"
b = "bbbbBBB"
c = "ccc CCC"
d = "dddddDDD"
e = "eeeEEEE"
我的功能:
def get_three(value):
search = re.search("[A-Z]{3}$", value)
if search:
return search.group(0)
return "NONE"
它回傳:
AAA
BBB
CCC
DDD
EEE
但應該是:
AAA
BBB
CCC
DDD
NONE
因為EEEE最后有,沒有EEE。
uj5u.com熱心網友回復:
您可以使用否定的lookbehind:
(?<![A-Z])[A-Z]{3}$
請參閱正則運算式演示。
詳情:
(?<![A-Z])- 如果當前位置的左側有一個大寫字母,則匹配失敗的負向后查找[A-Z]{3}- 三個大寫字母$- 字串結束。
如果您需要支持任何 Unicode 大寫字母:
import sys
pLu = '[{}]'.format("".join([chr(i) for i in range(sys.maxunicode) if chr(i).isupper()]))
pattern = fr'(?<!{pLu}){pLu}{{3}}$'
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/531329.html
標籤:Python正则表达式
