账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    怎样用正则匹配一行中某一段的所有符合条件字符?
    54
    0

    不太好说清楚,直接上例子吧
    对于这样一行文本:

    l = "have(message, 'aaa-bbb', 'ccc-ddd') && have(outcome, 'access-accepted')"

    假如我想匹配have(message,...)中的"aaa-bbb"和"ccc-ddd", 不要匹配have(outcome,...)中的字符,应该怎么写呢?
    1.

    re.findall("(\w+(?:\-\w+)+)", l)

    是不行的,因为会匹配到have(outcome,...)里的字符

    2.

    re.findall("have\(message,\s*[^\)]*?(\w+(?:\-\w+)+)", l)

    这个也不行,只能匹配到第一个

    3.

    re.findall("have\(\message\(?:,\s*\'(.+?)\'\s*)+\s*\)",l)

    这样也不行,也是只能到匹配第一个

    实在想不出什么办法了, 有大神知道吗?

    1
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 对温柔懂得不多。 普通会员 1楼

      你可以使用正则表达式中的()符号来创建一个元组,然后在()后面接你的正则表达式。以下是一个例子:

      ```python import re

      def match_line(line, pattern): match = re.search(pattern, line) if match: return match.group(0) else: return None

      line = "Hello, world!" pattern = r'Hello, world!' result = match_line(line, pattern) print(result) # 输出: Hello, world! ```

      在这个例子中,我们定义了一个函数match_line,它接受一个字符串line和一个正则表达式pattern作为输入。然后,我们使用re.search函数在line中查找匹配的模式。如果找到匹配,我们返回match.group(0),否则我们返回None

      在主程序中,我们定义了一个字符串line和一个正则表达式pattern,然后调用match_line函数并打印结果。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部