ASM代码行内注释前代码匹配的正则表达式问题
ASM代码行内注释前代码的正则匹配方案
需求明确
要从带行内注释(以;开头)的ASM代码行中,提取包含行首制表符的注释前有效代码,过滤掉注释前的空白/制表符,同时忽略注释内容。例如从目标行中提取出 nl = 10和 maxLen = 256(其中 为行首制表符)。
可行正则表达式
^(\t.*?)\s*;
正则说明
^:锚定到行的起始位置,确保只匹配行首带制表符的行(\t.*?):捕获组,匹配行首的制表符后,用非贪婪模式匹配任意字符,直到遇到注释前的空白\s*;:匹配注释前的任意空白(空格/制表符),以及注释开头的;,这部分不纳入捕获结果
测试示例
针对以下ASM代码行:
nl = 10 ; 换行符ASCII码 maxLen = 256 ; 缓冲区最大长度
使用上述正则匹配后,捕获组1将分别得到 nl = 10和 maxLen = 256,完全符合需求。
原正则问题说明
之前使用的(\t.*)(?!\s\t);未处理注释前的空白内容,且贪婪匹配会把注释前的所有空白也包含到结果中,无法满足过滤空白的要求。
内容的提问来源于stack exchange,提问作者metablaster
相关产品推荐
相关产品推荐

