使用 C# Regex.Split 方法,我想分割始终以 RepXYZ 开头的字符串,其中 XYZ 位是一个始终包含 3 或 4 个字符的数字。
例子
结果应该是:
到目前为止,我已经尝试过 (Rep)[\d]{3,4} 和 ((Rep)[\d]{3,4})+ 但这两个都给了我不需要的结果
使用Regex.Split经常会导致结果数组中出现空的或不需要的项目。使用(Rep)[\d]{3,4}in Regex.Split,会将Rep不带数字的内容放入结果数组中。 (Rep[\d]{3,4})会将Rep和 数字放入结果中,但由于匹配是在开始时,因此数组中会有一个空项。
我建议Regex.Match在这里使用:
var match = Regex.Match(text, @"^(Rep\d+)(.*)$");
if (match.Success)
{
Console.WriteLine(match.Groups[1].Value);
Console.WriteLine(match.Groups[2].Value);
}
Run Code Online (Sandbox Code Playgroud)
请参阅正则表达式演示
细节:
^- 字符串的开头(Rep\d+)- 捕获组 1:Rep以及任意一个或多个数字(.*)- 捕获组 2:除换行符之外的任何一个或多个字符,尽可能多$- 字符串末尾。使用基于环视的正则表达式可以更好地实现拆分方法:
var results = Regex.Split(text, @"(?<=^Rep\d+)(?=[$_])");
Run Code Online (Sandbox Code Playgroud)
请参阅此正则表达式演示。
(?<=^Rep\d+)(?=[$_])Rep在紧接在字符串开头的 和 一个或多个数字、紧随其后的$或 的位置处分割字符串_。
| 归档时间: |
|
| 查看次数: |
1039 次 |
| 最近记录: |