我有以下字符串:
@delimabc@delim@delim123@delim@delim456@delim
我需要编写一个.Net RegEx,在这个例子中找到3个匹配项(但假设匹配的数量是可变的:
如何编写一个RegEx,使表达式只匹配第一个和第二个@delim,然后匹配第三个和第四个,依此类推?
以下将从@delim字符串的第一个实例到最后一个实例进行捕获。
@delim(.+)+@delim
答案 0 :(得分:2)
您可以使用后面的样子:
(?<=@delim)\w+
(?<=@delim)
正在使用正面观察,它将字面@delim
字面匹配(区分大小写)
而\w+
将匹配[a-zA-Z0-9_]
中的任何字词。要包含或排除字符,您可以\w
替换[a-zA-Z0-9_]
,并包含新字符或删除不应在表达式中评估的字符。
<强> Online Demo 强>
这是.NET在线演示:
<强> .NET Online Demo 强>
VB.NET版
Dim sampleInput="@delimabc@delim@delim123@delim@delim456@delim"
Dim results = Regex.Matches(sampleInput,"(?<=@delim)\w+")
For Each item As Group In results
Console.WriteLine("Line: {0}", item)
Next
C#版
var sampleInput = "@delimabc@delim@delim123@delim@delim456@delim";
var results = Regex.Matches(sampleInput, "(?<=@delim)\\w+");
foreach (Group item in results) {
Console.WriteLine("Line: {0}", item);
}
更新版本:
(?<=@delim)[^@].+?(?=@delim|$)
答案 1 :(得分:1)
答案 2 :(得分:0)