RegEx忽略字符串的一部分以提取文本
本文关键字:提取 取文本 一部分 字符串 RegEx | 更新日期: 2023-09-27 18:26:19
我有以下字符串:
@delimabc@delim@delim123@delim@delim456@delim
我需要写一个.Net RegEx,在这个例子中找到3个匹配(但假设匹配的数量是可变的:
- abc
- 123
- 456
如何编写RegEx,使表达式只匹配第一个和第二个@delim,然后匹配第三个和第四个,依此类推?
下面当然会捕获@delim字符串的第一个到最后一个实例。
@delim(.+)+@delim
您可以使用look-behind,如:
(?<=@delim)'w+
(?<=@delim)
正在使用Positive Lookbacking,它将从字面上匹配字符@delim
(区分大小写)
而CCD_ 3将匹配来自CCD_。若要包含或排除字符,可以将'w
替换为[a-zA-Z0-9_]
,并包含新字符或删除表达式中不应计算的字符。
在线演示
这是.NET在线演示:
.NET在线演示
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|$)
@delim(.+?)@delim
试试这个。设置g
标志。刚刚修改了正则表达式以添加?
。获取caotures。请参阅演示。
http://regex101.com/r/uH3tP3/1
您可以在此正则表达式上使用split:
(?:@delim)+
RegEx演示
或者,用一个空字符串替换给定的正则表达式模式。