新爸爸,讓我的眼睛都累了,我試圖找出爲什麼這個代碼:正則表達式捕獲超過預期
var regex = new Regex(@"(https:)?\/");
Console.WriteLine (regex.Replace("https://foo.com", ""));
發出:
foo.com
我只有一個正斜槓,那麼爲什麼兩個都被捕獲在組中進行更換?
新爸爸,讓我的眼睛都累了,我試圖找出爲什麼這個代碼:正則表達式捕獲超過預期
var regex = new Regex(@"(https:)?\/");
Console.WriteLine (regex.Replace("https://foo.com", ""));
發出:
foo.com
我只有一個正斜槓,那麼爲什麼兩個都被捕獲在組中進行更換?
在指定的輸入字符串,替換匹配指定的替換字符串正則表達式模式的所有字符串。
每一個/
匹配的正則表達式@"(https:)?\/"
。如果您嘗試"https://foo/./com/"
,全部/
將被刪除。
Criminy - 因爲'https'是可選的,所有的斜線將始終匹配。 –
@MisterEpic我建議使用var regex = new Regex(@「(https?:(\ /){2})?」); – iheanyi
如果您檢查生成的匹配項,就會變得清晰。添加到您的代碼:
var matches = regex.Matches("https://foo.com");
foreach (Match match in matches)
{
Console.WriteLine(match.Value);
}
而且你會看到https:/
匹配和更換,/
匹配和替換(因爲https:
是可選的)和foo.com
依然存在。
恭喜您進入父權領域! :) –