我有一個包含名稱的字符串,如避免重複匹配,如果匹配空格前面
"james frederick ricky rick jones"
我想第一個匹配的「麥垛」通過一個空白
的先拆分此字符串代碼如下(在C#)
string source = "james frederick ricky rick jones";
string expression = "(rick)(?<!\1.*\1)";
string[] chunks = Regex.Split(source, expression, RegexOptions.IgnoreCase);
我,結果得到的是這樣的
[0] - "james frede"
[1] - "rick"
[2] - "ricky rick jones"
是否可以更改或修改正則表達式以獲得以下結果?
[0] - "james frederick"
[1] - "rick"
[2] - "y rick jones"
你是什麼意思第一**首先匹配「瑞克」**,如果有**許多瑞奇瑞克後來**?如果FIRST意味着**只有一個**,'string.IndexOf'就簡單多了。我的例子中的 –
與Frederick中的「rick」相匹配。但我只需要匹配只有第一個「瑞克」先行與空白。如果之後有很多ricky或rick,他們不應該匹配。 –
那你爲什麼選擇'regex'而不是'IndexOf',考慮性能,可維護性和簡單性(這就是爲什麼你在這裏問)? –