[英]Regex for splitting string into a collection of two based on a pattern
使用 C# Regex.Split 方法,我想拆分總是以 RepXYZ 開頭的字符串,其中 XYZ 位是一個總是有 3 或 4 個字符的數字。
例子
結果應該是:
到目前為止,我已經嘗試過 (Rep)[\\d]{3,4} 和 ((Rep)[\\d]{3,4})+ 但這兩個都給了我不想要的結果
使用Regex.Split
通常會導致結果數組中出現空項或不需要的項。 在Regex.Split
使用(Rep)[\\d]{3,4}
,會將沒有數字的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);
}
查看正則表達式演示
細節:
^
- 字符串的開始(Rep\\d+)
- 捕獲組 1: Rep
和任何一位或多位數字(.*)
- 捕獲組 2:除換行符以外的任何一個或多個字符,盡可能多$
- 字符串的結尾。使用基於環視的正則表達式可以更好地實現拆分方法:
var results = Regex.Split(text, @"(?<=^Rep\d+)(?=[$_])");
請參閱此正則表達式演示。
(?<=^Rep\\d+)(?=[$_])
在緊跟Rep
和字符串開頭的一個或多個數字的位置拆分字符串,並緊跟在$
或_
。
嘗試在$
或_
上拆分正則表達式模式:
string input = "Rep127_Group_Text";
string[] parts = input.Split(new[] { '$', '_' }, 2);
foreach (string part in parts)
{
Console.WriteLine(part);
}
這打印:
Rep127
Group_Text
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.