string input = "Hello World!";
string pattern = "(World|Universe)";
string replacement = "$1";
string result = Regex.Replace(input, pattern, replacement);
Có ví dụ sau đây, kết quả sẽ là "Hello World!"
, như $1
được thay thế bằng nhóm đầu tiên (World|Universe)
, tuy nhiên kết quả tôi muốn là "Hello $1!"
Xử lý văn bản regex thay thế thoát có chứa nhân vật đô la
Các Phương pháp Regex.Escape
có nghĩa là được sử dụng để thoát khỏi mẫu Regex, chứ không phải thay thế, vì nó có thể thoát khỏi các ký tự khác như dấu gạch chéo và các ký tự mẫu Regex khác. Việc sửa lỗi rõ ràng cho vấn đề của tôi là thay thế bằng "$$1"
và sẽ đạt được "Hello $1!"
, nhưng tôi tự hỏi liệu ký hiệu đô la có phải là giá trị duy nhất tôi phải thoát hay không (giả sử replacement
là người dùng được tạo và tôi không biết trước thời gian), hoặc là có một hàm trợ giúp thực hiện điều này.
Có ai biết chức năng để thoát khỏi giá trị thay thế mà Regex.Replace(string input, string pattern, string replacement)
sử dụng không?
Cũng từ MSDN: Thay thế là các phần tử ngôn ngữ biểu thức chính quy duy nhất được nhận dạng trong mẫu thay thế. Tất cả các yếu tố ngôn ngữ biểu thức chính quy khác, kể cả thoát ký tự, chỉ được phép trong các mẫu biểu thức chính quy và không được nhận dạng trong các mẫu thay thế. – Gebb
Điều này có vẻ đủ tốt cho tôi, tôi nghi ngờ làm một câm ol ''replace.Replace (" $ "," $$ ")' nên được tốt 100% thời gian sau đó? – Matthew
Có, 'replace.Replace (" $ "," $$ ")' nên là tất cả những gì bạn cần. – dtb