这样的正则该怎么写?

2022-11-01 16:53:46 +08:00
 yaphets666
结构 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+

只要保证正确例子通过测试,错误例子无法通过测试即可.
求大佬指点怎么写这样的正则?
676 次点击
所在节点    问与答
3 条回复
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
2022-11-10 16:56:01 +08:00
@chrawsl

思路是分两块,首先 (?:\d|\{\d\,\d\}\+) 匹配末尾的 A 或者 B ,前面的都应该是 A/B + 的形式,用 (?:(?:\d|\{\d\,\d\}\:\d)\+) 匹配,然后用 ^ $ 规定头和尾
yaphets666
2022-11-10 17:20:26 +08:00
@chrawsl 感谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/891825

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX