【发布时间】:2021-07-31 18:57:03
【问题描述】:
我需要一个正则表达式来获取数字 1 后跟数字 0 的序列,并且总数应该等于最大长度。有没有办法做类似(([1]+)([0]+)){maxLength} 的事情?
例如: 最大长度 = 7
10 -> should not pass (total length < maxLength)
1111100 -> should match
1000000 -> should match
11110000000 -> should match 1111000.
111111111111 -> should match 1111111.
Plus:序列可以是 0 后跟 1,1 的数量越大越好(我不知道是否只有一个正则表达式可能)。
000000001111 -> 应该得到 0001111。
我关注的是 1,然后是 0。
我从[1]+[0]+开始,
在我量化了 0([1]+)([0]{1,7}) 之后,
但它仍然给出比我想要的更多的 0。
然后我在想([1]{7,}|[1]{6}[0]{1}|[1]{5}[0]{2}|[1]{4}[0]{3}|[1]{3}[0]{4}|[1]{2}[0]{5}|[1]{1}[0]{6}),
好的,它有效。但是如果 maxLength = 100,上述解决方案是不可行的。
有没有办法计算第一个匹配组的长度,然后计算第二组与第一个匹配的差异?
或者像(([1]+)([0]+)){7}这样的东西?
【问题讨论】:
-
那么
000011110000呢?你想在这里匹配什么? -
@JvdV 应该匹配 1111000(大于 1)。
标签: regex regex-group