对于字符串:
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/