V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
yaphets666
V2EX  ›  问与答

这样的正则该怎么写?

  •  
  •   yaphets666 · 2022-11-01 16:53:46 +08:00 · 494 次点击
    这是一个创建于 513 天前的主题,其中的信息可能已经有所发展或是发生改变。
    结构 A {数字,数字}:数字 括号中的数字个数不限,逗号分割
    结构 B 数字

    A 和 B 之间用加号 + 相连,A 和 B 的个数,排列位置不限,整体头尾没有加号+。数字从 0-9 中取也就是\d.
    A+A+B+A+B+B ·····

    正确例子 7+{3,4}:1+1+{5,6}:1+2

    错误例子 +{3,4}:1+1+{5,6}:1+2
    错误例子 7+{3,4}:1+1+{5,6}:1+
    错误例子 7{3,4}:1+1{5,6}:1+

    只要保证正确例子通过测试,错误例子无法通过测试即可.
    求大佬指点怎么写这样的正则?
    chrawsl
        1
    chrawsl  
       2022-11-10 16:54:44 +08:00
    ![]( https://p.sda1.dev/8/c5e7997ff28e32b95b1d4d3bf1949546/image.png)

    ^(?:(?:\d|\{\d\,\d\}\:\d)\+)*(?:\d|\{\d\,\d\}\+)$
    chrawsl
        2
    chrawsl  
       2022-11-10 16:56:01 +08:00
    @chrawsl

    思路是分两块,首先 (?:\d|\{\d\,\d\}\+) 匹配末尾的 A 或者 B ,前面的都应该是 A/B + 的形式,用 (?:(?:\d|\{\d\,\d\}\:\d)\+) 匹配,然后用 ^ $ 规定头和尾
    yaphets666
        3
    yaphets666  
    OP
       2022-11-10 17:20:26 +08:00
    @chrawsl 感谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4911 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 09:52 · PVG 17:52 · LAX 02:52 · JFK 05:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.