Tôi đang làm gì sai ở đây?Regex để đối sánh chữ và số và dấu cách
string q = "john s!";
string clean = Regex.Replace(q, @"([^a-zA-Z0-9]|^\s)", string.Empty);
// clean == "johns". I want "john s";
Tôi đang làm gì sai ở đây?Regex để đối sánh chữ và số và dấu cách
string q = "john s!";
string clean = Regex.Replace(q, @"([^a-zA-Z0-9]|^\s)", string.Empty);
// clean == "johns". I want "john s";
Tôi nghi ngờ^không hoạt động theo cách bạn cho là ngoài lớp nhân vật.
Điều bạn đang nói là thay thế mọi thứ không phải là chữ số bằng chuỗi rỗng HOẶC bất kỳ không gian hàng đầu nào. Tôi nghĩ điều bạn muốn nói là không gian không thể thay thế - hãy thử di chuyển \ s vào lớp [].
bạn đang phải, đó là bắt đầu với (mà tôi biết, nhưng nó là muộn) –
Có vẻ như có hai vấn đề.
Tôi nghĩ rằng bạn muốn regex sau @ "([^ a-zA-Z0-9 \ s]) +"
Nó sẽ không thay thế tất cả các chữ số và không gian với chuỗi rỗng? – zigdon
Về số 2, định lượng không thực sự quan trọng vì anh ta muốn thay thế tất cả các ký tự không khớp trong chuỗi chứ không chỉ là một lần chạy duy nhất, yêu cầu thay thế toàn cục (.../g trong Perl, không chắc chắn của cú pháp C#), có hoặc không có dấu */+. –
C# regex là @ "^ [a-zA-Z0-9 \ r] + $" – marcel
Các circumflex bên trong dấu ngoặc vuông có nghĩa là tất cả các nhân vật ngoại trừ phạm vi tiếp theo. Bạn muốn có dấu mũ ngoài dấu ngoặc vuông.
Vâng, tôi muốn nó bên trong.Phù hợp với bất kỳ thứ gì không phải là các ký tự này, –
Ồ, nơi bạn nói "Tôi muốn" Tôi nghĩ bạn muốn nói rằng bạn muốn có một biểu thức chính quy để khớp với điều đó. Bạn có nghĩa là bạn muốn kết quả của Thay thế là điều đó. Vì vậy, bạn muốn biểu thức chính quy không khớp với điều đó. Não tôi đau. –
tôi đã nhận nó:
string clean = Regex.Replace(q, @"[^a-zA-Z0-9\s]", string.Empty);
Không biết bạn có thể đặt \ s trong dấu ngoặc
Regex của bạn sẽ chỉ phù hợp với chuỗi không chứa số alpha, số hoặc dấu cách.^Ở đầu của một [] có nghĩa là "không phải bất cứ điều gì bên trong đây" – JaredPar
Đó chính là điều tôi muốn. Trong Regex.Replace, tôi muốn khớp với bất kỳ thứ gì KHÔNG phải là chữ cái, số hoặc không gian. –
Ah được rồi, rõ ràng hơn bây giờ. – JaredPar
này:
string clean = Regex.Replace(dirty, "[^a-zA-Z0-9\x20]", String.Empty);
\ x20 là ascii hex cho ký tự 'không gian'
bạn có thể thêm nhiều ký tự riêng lẻ mà bạn muốn cho phép. Nếu bạn muốn ví dụ "?" để được ok trong chuỗi trả lại thêm \ x3f.
bạn cũng có thể khớp với một ký tự ** ASCII ** làm bát phân. Trong trường hợp đó ** \ 040 ** đại diện cho ký tự khoảng trắng. –
... hoặc bạn có thể chỉ cần gõ nguyên văn nếu chúng là những thứ đơn giản như không gian hoặc?: '[^ A-Za-z0-9?]' Vv – ChrisF
Các regex sau đây là để đưa không gian trong hộp văn bản.
Regex r = new Regex("^[a-zA-Z\\s]+");
r.IsMatch(textbox1.text);
Điều này phù hợp với tôi.
Sẽ không '[A-z \\ s]' dễ hơn '[a-zA-Z \\ s]'? – Alexander
ok, duh tôi ngốc nghếch^bắt đầu bằng ... tôi mệt. vẫn không biết làm thế nào để phù hợp với chỉ là một không gian –