繁体   English   中英

正则表达式捕捉多个匹配看后看

[英]Regex catch multiple match look behind look ahead

这是来自此ruby 的扩展问题,使用正则表达式在两个字符串之间查找内容

所以我想捕获多个这个用户名

文本(1 行)

starting-middle+31313131313@mysite.com starting-middle+4141414141@mysite.com

结果

["31313131313", "4141414141"]

我试过这个(?<=\+).*(?=@)但它会采用最后一个前瞻字符,所以结果类似于31313131313@mysite.com starting-middle+41414141

https://rubular.com/r/3mn5t1pYffCC7C

您可以匹配+并使用\K忘记到目前为止匹配的内容,而不是使用后视。

然后使用否定字符 class来匹配除@或空白字符之外的任何字符,并使用正向先行在右侧断言@

\+\K[^\s@]+(?=@)

解释

  • \+匹配+
  • \K清除匹配缓冲区
  • [^\s@]+匹配除空白字符或@以外的任何字符的 1+ 次(或使用\d+仅匹配数字)
  • (?=@)正向前瞻,直接在当前 position 右边断言@

正则表达式演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM