我想要匹配的是这样的:
public FUNCTION_NAME
FUNCTION_NAME proc near
......
FUNCTION_NAME endp
FUNCTION_NAME可以是:
version_etc
version_etc_arn
version_etc_ar
我的模式是:
pattern = "public\s+" + func_name + "[\s\S]*" + func_name + "\s+endp"
并与:
匹配match = re.findall(pattern, content)
所以目前我发现如果fuction_name等于version_etc,那么它将匹配 所有的version_etc_arn,version_etc_ar和version_etc .....
表示模式是否为:
“public \ s +”+“version_etc”+“[\ s \ S] *”+“version_etc”+“\ s + endp”
那么它将匹配:
public version_etc_arn
version_etc_arn proc near
......
version_etc_arn endp
public version_etc_ar
version_etc_ar proc near
......
version_etc_ar endp
public version_etc
version_etc proc near
......
version_etc endp
我正试图匹配:
public version_etc
version_etc proc near
......
version_etc endp
我错了吗?有人能给我一些帮助吗?
感谢你!
答案 0 :(得分:2)
[\s\S]*
匹配任何内容的0或更多内容,包括您要排除的_arn
。因此,您需要在func_name
之后需要一个空格:
pattern = r"(?sm)public\s+{f}\s.*^{f}\s+endp".format(f=func_name)