regex - 在正则表达式中遍历字符串两次

标签 regex perl

我有一个类似的输入字符串(实际字符串要复杂得多):

223001PAPA DUMMY

在此字符串上,我希望将前 3 个字符作为一组进行匹配,将接下来的 3 个字符作为另一组进行匹配,并希望将匹配项保存在变量中以供进一步处理。

我使用的正则表达式:

(.{3})(.{3}).*

regex 101 example 1

现在在同一个输入字符串上,我还想匹配整个字符串长度,即本例中的 16

(.{16}).*

regex 101 example 2

但我想在单个正则表达式中执行这两个操作,即一个匹配项应匹配完整的输入字符串并保存在变量中,然后另外 2 个匹配项匹配前 3 个字符和后 3 个字符,如上所示,这可能吗? 我该如何继续?尝试反向引用并没有多大帮助

最佳答案

 ^((.{3})(.{3}).{10})

你可以使用这个。

这里组1将是16个字符的字符串

组 2 将是前 3 个字符。

组 3 将是接下来的 3 个字符。

https://regex101.com/r/fF8aN0/3

当您将其与 re.findall 一起使用时,您将获得上面定义的 3 值的列表

关于regex - 在正则表达式中遍历字符串两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32500323/

相关文章:

GString token 的正则表达式

java - 从字符串中提取自定义 HTML 属性

ruby - 根据单词拆分字符串

php - 我可以仅通过数据中的字母和数字查询列吗?比如 preg_replace

perl - 如何使用 perl 对应用程序输出添加时间戳

regex - 如何从超链接获取自定义属性的值?

json - 在 perl 中创建一个 json 字符串

perl - Perl 的默认对象到字符串转换在哪里定义?

perl - 网址 :Mechanize:Firefox fails connection

perl - 执行shell命令不会产生任何结果