查找空行:^[ \t]*$\r\n
查找最後一位是小寫字母的8位十六進制數:0x[0-9]{7,7}[a-z]{1,1}
查找至少有一位是小寫字母的8位十六進制數:0x(?=[0-9]{0,7}[a-z])[a-z0-9]{8,8}
截取當前行第一個括號前面的全部字符:(?=^[^(|^(^\r|^\n]*[(|(])^[^(|^(]*
import re #查找至少有一位是小寫字母的8位十六進制數,並將其修改爲大寫 def hex_to_upper(hexStr): listHex = re.findall("0x(?=[0-9]{0,7}[a-z])[a-z0-9]{8,8}", hexStr) print listHex newStr = re.sub(r"0x(?=[0-9]{0,7}[a-z])[a-z0-9]{8,8}", "0XLLLLLLLL", hexStr) for obj in listHex: print obj, '-----------', obj[2:] newStr = re.sub(r"0XLLLLLLLL", '0x'+obj[2:].upper(), newStr, 1) return newStr if __name__ == '__main__': a = "oei0x7822CDE2lwnfnsodf0x7822abe2lsdksdf1023900x98de293c988e9we0x98112931ii" print a print hex_to_upper(a)