正则表达式匹配不到表达式情况?
我使用正则表达式匹配下面字符串:匹配不出来 {0,2,56};
CONST(tUI8, RTE_CONST_APPL_CDATA) Rte_FailureInjection_FFFFFe_XDU8 = 0U;
CONST(tUI16, RTE_CONST_APPL_CDATA) Rte_FailureInjection_trhehdt_XDU16 = {0,2,56};
CONST(tSI16, RTE_CONST_APPL_CDATA) Rte_FailureInjection_mdfgntWert_XDS16 = 0U;
表达式如下:
import rec_code = ''' /**FailureInjection**/
CONST(tUI8, RTE_CONST_APPL_CDATA) Rte_FailureInjection_yyySteerModeActivate_XDU8 = 0U;
CONST(tUI16, RTE_CONST_APPL_CDATA) Rte_FailureInjection_t01MaxMomentZeit_XDU16 = {0,2,56};
CONST(tSI16, RTE_CONST_APPL_CDATA) Rte_FailureInjection_m01MaxMomentWert_XDS16 = 0U;'''# 这个可以匹配上
pattern1 = r"CONST\(.*?\)(.*?)=([^;]*?);"
matches1 = re.findall(pattern, c_code)#这个不可以匹配上
pattern2 = r"CONST\([^\)]*?\)([^=]*?)=([^;]*?);"
matches2 = re.findall(pattern, c_code)
这是因为.*已经包含了";",结果检查到;号时发现不对,造成否认这种情况,可以将.使用[^;]代替;同理其它也可以代替;
pattern = r"CONST\([^\)]*?\)([^=]*?)=([^;]*?);"