5
Regex.Replace diyor ki:Regex yalnızca eşleşen grupları değiştirir ve eşleşmeyen grupları yoksayar mı?
Belirtilen giriş dizesi, bir belirtilen yerini alan dizeyle bir belirtilen normal ifadeyle eşleşen tüm dizeleri yerini alır. Benim durumumda
:
string w_name = "0x010102_default_prg_L2_E2_LDep1_LLC";
string regex_exp = @"(?:E\d)([\w\d_]+)(?:_LLC)";
w_name = Regex.Replace(w_name, regex_exp, string.Empty);
Çıktı:
0x010102_default_prg_L2_
ama neden benim eşleşmeyen gruplar değiştiriliyor
0x010102_default_prg_L2_E2_LLC
bekliyordum (grup 1 ve 3)? Ve beklenen çıktıyı elde etmek için bunu nasıl düzeltebilirim?
Bu çalışır: lütfen "$ 1 $ 2" den "$ 1 $ 3" den grup seçimini düzeltin. Nasıl çalıştığını açıklayabilir misin? Boş dize yerine "abc" dizesiyle değiştirmem gerekirse ne olur? – greenfeet
@greenfeet Neden regex'inizdeki ikinci kapak grubunu kaldırdığımdan, $ 1 $ 2 'yi $ 1 $ 3' olarak değiştirmem gerekiyor. 2. '$ 1' ve '$ 2', yani $ 1abc $ 2' arasında 'abc' ekleyin. İkinci cevap için, sadece '' abc'' yerine 'string.Empty' yeterli olacaktır. –
haklısın, ikinci grubu çıkardığınızı farketmedim, teşekkürler! – greenfeet