[英]Getting overlapping regex matches in C#
我有正則表達式1(0*)1
和測試字符串1000010001
我想要 2 個匹配項,但我發現只找到 1 個匹配項:
var regex = new Regex("1(0*)1");
var values = regex.Matches(intBinaryString);
// values only has 1 match
regexonline 似乎同意: https ://regex101.com/r/3J9Qxj/1
我究竟做錯了什么?
您需要匹配重疊的字符串。
這意味着你應該用一個捕獲組( (
+你的模式+ )
)包裝你的模式,並將這個消耗模式放入一個積極的前瞻中,然后匹配所有出現的情況並獲取組 1 值:
(?=(YOUR_REGEX_HERE))
用
var regex = new Regex("(?=(10*1))");
var values = regex.Matches(intBinaryString)
.Cast<Match>()
.Select(m => m.Groups[1].Value)
.ToList();
查看正則表達式演示
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.