簡體   English   中英

正則表達式用於包含在1之間的任何非空連續序列0

[英]Regular Expression for any non-empty consecutive sequence of 0's enclosed between 1

我需要找到一個字符串中的所有組,其中連續的0序列在1之間

100001abc101 // 2 groups `100001` and `101`
1001ab010abc01001 // 2 groups `1001' and `1001`
1001010001 // 3 groups `1001`, `101` and `10001` --> This is a special case

同樣的我的正則表達式是: 1(0+)1這適用於第一和第二種情況,但在第三種情況下它只匹配100110001而不是101

請提出我遺漏的內容。

問題是匹配從最后一個匹配組的下一個字符開始,它應該從相同的匹配字符本身開始。

嘗試后視和前瞻,因為你實際上並不想匹配1:

/(?<=1)0+(?=1)/

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

要匹配重疊匹配,您應該在前瞻中使用捕獲組,如下所示:

(?=(10+1))

RegEx演示

由於我們只是斷言匹配而不是匹配它們,因此正則表達式引擎能夠返回10+1所有可能組合,即使它們是重疊的。

使用類似(?=(10+1))10+
其中第1組包含序列
不匹配最后1。

https://regex101.com/r/uH5OrS/1

一般來說,你想要移動最后10+的位置。
在這種情況下,沒有必要,但我不會養成習慣
不包括它,它有一天會咬你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM