Regex.Replace nói:Regex chỉ thay thế các nhóm phù hợp và bỏ qua các nhóm không phù hợp?
Trong một chuỗi đầu vào quy định, thay thế tất cả các chuỗi phù hợp với một quy định biểu thức chính quy với một chuỗi thay thế quy định.
Trong trường hợp của tôi:
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);
Output:
0x010102_default_prg_L2_
nhưng tôi đã mong
0x010102_default_prg_L2_E2_LLC
Tại sao nó thay thế nhóm phi phù hợp với tôi (nhóm 1 và 3)? Và làm cách nào để khắc phục điều này để có được kết quả mong đợi?
này hoạt động: xin sửa chữa lựa chọn nhóm từ "$ 1 $ 2" thành "$ 1 $ 3". Bạn có thể giải thích cách nó hoạt động? Điều gì sẽ xảy ra nếu tôi cần thay thế bằng chuỗi ký tự "abc" thay vì chuỗi rỗng? – greenfeet
@ greenfeet lý do tại sao tôi cần thay đổi '$ 1 $ 2' thành' $ 1 $ 3', vì tôi đã xóa nhóm mũ thứ hai có trong regex của bạn. 2. Chỉ cần thêm 'abc' inbetween' $ 1' và '$ 2', tức là' $ 1abc $ 2'. Đối với câu trả lời thứ hai, chỉ cần '" abc "' thay vì 'string.Empty' là đủ. –
bạn nói đúng, tôi không nhận thấy bạn đã xóa nhóm thứ hai, cảm ơn! – greenfeet