ZBLOG

# 提取成员函数的正则表达式模式(不包含多行注释) pattern1 = r"(?

你可以尝试使用以下正则表达式模式来匹配成员函数(不包含多行注释)并捕获最后的 )=0; 部分:

import re

pattern = r"(?<!/\*)\s*(?:.+?\s+.+?\(.*?\).*?(?:;\s*|=\s*0;\s*))(?!.*\*/)"
text = """
    virtual int queryDataBase1(const std::string serverUrl, std::string &result);
    virtual int queryDataBase2(const std::string serverUrl, std::string &result) = 0;
"""

matches = re.findall(pattern, text)
print(matches)  # 输出结果: [')= 0;']

在上述代码中,我们使用了一个正则表达式模式 (?!/\*)\s*(?:.+?\s+.+?\(.*?\).*?(?:;\s*|=\s*0;\s*))

  • (?<!/\*) 使用否定回溯零宽断言 (?!/\*) 来确保不匹配多行注释的起始部分。
  • \s* 匹配任意数量的空格字符。
  • (?:.+?\s+.+?\(.*?\).*?(?:;\s*|=\s*0;\s*)) 这个部分用于匹配成员函数定义。其中:
    • .+? 匹配非贪婪的一串字符,用来表示返回类型和函数名。
    • \(.+?\) 匹配括号内的参数列表。
    • .*? 匹配其他可能出现的任意字符(比如 const、throw 等)。
    • (?:;\s*|=\s*0;\s*) 使用非捕获分组 (?:...) 和管道符号 | 来表示两种可能的情况:
      • ;\s* 匹配分号后可能存在的任意数量的空格字符。
      • =\s*0;\s* 匹配等于零和分号后可能存在的任意数量的空格字符。

这样,你就可以匹配包含 )=0; 的成员函数定义了。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=14389

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?