regex - 在可选 token 之间寻找匹配?

标签 regex perl

对于字符串:

  • text::handle:e@ma.il::text
  • text::chat_identifier:chat0123456789&text

  • 我有当前的正则表达式:
    m/(handle:|chat_identifier:)(.+?)(:{2}|&)/
    我目前正在使用 $2 来获得我想要的值(在第一个字符串 e@ma.il 和第二个字符串 chat0123456789 中)。

    不过,有没有更好/更快/更简单的方法来解决这个问题?

    最佳答案

    它是否“更好”取决于上下文,但您可以采用这种方法:将字符串拆分为“:”并获取结果列表的第四个元素。如果第三个字段可以不是“handle”或“chat_identifier”,那么这可以说比正则表达式更具可读性并且更健壮。

    我认为这两种方法的速度都非常相似,但可能几乎适用于 perl 中的任何实现。在担心它之前,我想表明速度对于这一步至关重要......

    关于regex - 在可选 token 之间寻找匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13503978/

    相关文章:

    perl - 不能持续到循环 block 之外

    regex - 查找所有长度大于 N 的行

    java - 为什么这个简单的 Jakarta Regexp 类无法运行?

    regex - Perl 正则表达式 - 为什么正则表达式/[0-9\.]+(\,)/匹配逗号

    excel - 结合多个正则表达式模式VBA

    perl - 是否有支持 SSL/TLS 的核心 Perl 模块?

    perl - perl 中的固定字段宽度数字输出

    perl - 如何使用 Term::ReadLine 检索命令历史记录?

    java正则表达式查找但不包含在组中

    perl - 如何防止Mojolicious转义字符的隐藏数据?