Hướng dẫn all special characters regex python - tất cả các ký tự đặc biệt trong regex python

Tôi muốn viết một biểu thức thông thường đơn giản để kiểm tra xem trong chuỗi đã cho tồn tại bất kỳ ký tự đặc biệt nào. Regex của tôi hoạt động nhưng tôi không biết tại sao nó cũng bao gồm tất cả các số, vì vậy khi tôi đặt một số số, nó sẽ trả lại lỗi.

Mã của tôi:

//pattern to find if there is any special character in string
Pattern regex = Pattern.compile("[$&+,:;=?@#|'<>.-^*()%!]");
//matcher to find if there is any special character in string
Matcher matcher = regex.matcher(searchQuery.getSearchFor());

if(matcher.find())
{
    errors.rejectValue("searchFor", "wrong_pattern.SearchQuery.searchForSpecialCharacters","Special characters are not allowed!");
}

Hướng dẫn all special characters regex python - tất cả các ký tự đặc biệt trong regex python

Suraj Rao

29.2k11 Huy hiệu vàng96 Huy hiệu bạc103 Huy hiệu đồng11 gold badges96 silver badges103 bronze badges

Hỏi ngày 5 tháng 8 năm 2013 lúc 12:18Aug 5, 2013 at 12:18

Piotr Sagalarapiotr SagalaraPiotr Sagalara

2.1173 huy hiệu vàng21 Huy hiệu bạc25 Huy hiệu đồng3 gold badges21 silver badges25 bronze badges

6

Xin đừng làm điều đó ... unicode

[$&+,:;=?@#|'<>.^*()%!-]
1s như thế này 👼 đang chết! ◕◡◕ (← Đây không phải là hình ảnh) (cũng không phải là mũi tên!)

Và bạn đang giết 20 năm của DOS :-) (Smiley cuối cùng được gọi là ____ 22 ... bây giờ là lúc ____ 23 ... nhưng trong thời cổ đại, đó là ____24)

và bạn của anh ấy

________ 25 ... bây giờ là lúc ____ 26 ... nhưng vào thời cổ đại, đó là

[$&+,:;=?@#|'<>.^*()%!-]
7

Hãy thử một trận đấu tiêu cực:

Pattern regex = Pattern.compile("[^A-Za-z0-9]");

.

Đã trả lời ngày 5 tháng 8 năm 2013 lúc 12:23Aug 5, 2013 at 12:23

8

Bạn có một dấu gạch ngang ở giữa lớp ký tự, có nghĩa là một phạm vi ký tự. Đặt dấu gạch ngang ở cuối lớp như vậy:

[$&+,:;=?@#|'<>.^*()%!-]

Đã trả lời ngày 5 tháng 8 năm 2013 lúc 12:22Aug 5, 2013 at 12:22

JerryjerryJerry

69.5K12 Huy hiệu vàng99 Huy hiệu bạc141 Huy hiệu Đồng12 gold badges99 silver badges141 bronze badges

2

Đó là bởi vì mẫu của bạn chứa

[\p{P}\p{S}]
0, tất cả các ký tự giữa và bao gồm
[\p{P}\p{S}]
1 và
[\p{P}\p{S}]
2, bao gồm các chữ số và một số ký tự khác như được hiển thị bên dưới:

Hướng dẫn all special characters regex python - tất cả các ký tự đặc biệt trong regex python

Nếu bằng các ký tự đặc biệt, bạn có nghĩa là dấu chấm câu và biểu tượng sử dụng:

[\p{P}\p{S}]

trong đó chứa tất cả các dấu câu và ký hiệu Unicode.

Đã trả lời ngày 5 tháng 8 năm 2013 lúc 12:31Aug 5, 2013 at 12:31

Sina Iravaniansina IravanianSina Iravanian

15.8k4 Huy hiệu vàng33 Huy hiệu bạc45 Huy hiệu Đồng4 gold badges33 silver badges45 bronze badges

Vì bạn không có không gian trắng và nhấn mạnh trong lớp nhân vật của mình, tôi nghĩ rằng Regex sẽ tốt hơn cho bạn:

Pattern regex = Pattern.compile("[^\w\s]");

Có nghĩa là khớp với mọi thứ khác ngoài

[\p{P}\p{S}]
3

Phiên bản Unicode:

Pattern regex = Pattern.compile("[^\p{L}\d\s_]");

Đã trả lời ngày 5 tháng 8 năm 2013 lúc 12:27Aug 5, 2013 at 12:27

Anubhavaanubhavaanubhava

739K62 Huy hiệu vàng538 Huy hiệu bạc615 Huy hiệu Đồng62 gold badges538 silver badges615 bronze badges

0

Đối với những người (như tôi) đang tìm kiếm một câu trả lời cho các nhân vật đặc biệt như ä, v.v. Chỉ cần sử dụng mẫu này:

  • Chỉ văn bản (hoặc một không gian): "[a-za-zà -ȕ]"

  • Văn bản và số: "[A-A-ZÀ-ȕ0-9]"

  • Văn bản, số và một số ký tự đặc biệt: "[A-A-ZÀ-ȕ0-9 (), -_.,]"

Regex chỉ bắt đầu ở chỉ mục ASCII và kiểm tra xem một ký tự của chuỗi nằm trong cả hai chỉ mục [startindex-endindex].

Vì vậy, bạn có thể thêm bất kỳ phạm vi.

Cuối cùng, bạn có thể chơi xung quanh với một công cụ tiện dụng: https://regexr.com/

Chúc may mắn;)

Đã trả lời ngày 14 tháng 5 năm 2019 lúc 13:42May 14, 2019 at 13:42

1

Sử dụng điều này để bắt các ký tự đặc biệt chung không bao gồm

[\p{P}\p{S}]
4.

/[!"`'#%&,:;<>=@{}~\$\(\)\*\+\/\\\?\[\]\^\|]+/

Nếu bạn cũng muốn bao gồm

[\p{P}\p{S}]
4, thì hãy sử dụng điều này:

/[-._!"`'#%&,:;<>=@{}~\$\(\)\*\+\/\\\?\[\]\^\|]+/

Nếu bạn muốn lọc các chuỗi thân thiện với URL và không chứa bất kỳ ký tự hoặc không gian đặc biệt nào, thì hãy sử dụng điều này:

/^[^ !"`'#%&,:;<>=@{}~\$\(\)\*\+\/\\\?\[\]\^\|]+$/

Khi bạn sử dụng các mẫu như

[\p{P}\p{S}]
6, thì bạn sẽ bắt đầu bắt bảng chữ cái đặc biệt như các ngôn ngữ khác và một số bảng chữ cái có dấu châu Âu (như é, í).

Đã trả lời ngày 2 tháng 3 năm 2021 lúc 8:13Mar 2, 2021 at 8:13

Hướng dẫn all special characters regex python - tất cả các ký tự đặc biệt trong regex python

Ehsan Kaziehsan KaziEhsan Kazi

1912 Huy hiệu bạc6 Huy hiệu đồng2 silver badges6 bronze badges

Đây là biến thể regex của tôi về một nhân vật đặc biệt:

String regExp = "^[^<>{}\"/|;:.,~!?@#$%^=&*\\]\\\\()\\[¿§«»ω⊙¤°℃℉€¥£¢¡®©0-9_+]*$";

(Mã Java)

Đã trả lời ngày 20 tháng 3 năm 2017 lúc 14:52Mar 20, 2017 at 14:52

VkostencvkostencVKostenc

1.08714 Huy hiệu bạc18 Huy hiệu đồng14 silver badges18 bronze badges

0

Sử dụng mẫu biểu thức chính quy này ("^[A-A-Z0-9]*$") .it xác thực chuỗi chữ và số không bao gồm các ký tự đặc biệt

Đã trả lời ngày 4 tháng 7 năm 2016 lúc 6:41Jul 4, 2016 at 6:41

Sam Samsam

Huy hiệu bạc 11311 silver badge9 bronze badges

Tôi đã xác định một mẫu để tìm kiếm bất kỳ ký tự đặc biệt ASCII nào nằm trong khoảng từ 032 đến 126 ngoại trừ Alpha-Numeric. Bạn có thể sử dụng một cái gì đó như cái dưới đây:

Để tìm bất kỳ nhân vật đặc biệt nào:

Pattern regex = Pattern.compile("[^A-Za-z0-9]");
0

Để tìm tối thiểu 1 và tối đa của bất kỳ số lượng nào:

Pattern regex = Pattern.compile("[^A-Za-z0-9]");
1

Các mẫu này có các ký tự đặc biệt nằm trong khoảng từ 032 đến 047, 058 đến 064, 091 đến 096 và 123 đến 126.

Đã trả lời ngày 14 tháng 6 năm 2019 lúc 7:58Jun 14, 2019 at 7:58

Hướng dẫn all special characters regex python - tất cả các ký tự đặc biệt trong regex python

Nếu bạn chỉ dựa vào các ký tự ASCII, bạn có thể dựa vào việc sử dụng các phạm vi Hex trên bảng ASCII. Đây là một regex sẽ lấy tất cả các ký tự đặc biệt trong phạm vi

[\p{P}\p{S}]
7,
[\p{P}\p{S}]
8,
[\p{P}\p{S}]
9,
Pattern regex = Pattern.compile("[^\w\s]");
0

Pattern regex = Pattern.compile("[^A-Za-z0-9]");
2

Tuy nhiên, bạn có thể nghĩ về các nhân vật đặc biệt như không phải là nhân vật bình thường. Nếu chúng ta thực hiện phương pháp đó, bạn chỉ có thể làm điều này

Pattern regex = Pattern.compile("[^A-Za-z0-9]");
3

Hower Điều này sẽ không bắt

Pattern regex = Pattern.compile("[^\w\s]");
1
[\p{P}\p{S}]
2 và có lẽ là những người khác.

Đã trả lời ngày 3 tháng 2 năm 2016 lúc 22:06Feb 3, 2016 at 22:06

Serguei Fedorovserguei FedorovSerguei Fedorov

7.5459 Huy hiệu vàng62 Huy hiệu bạc92 Huy hiệu Đồng9 gold badges62 silver badges92 bronze badges

4

Try:

Pattern regex = Pattern.compile("[^A-Za-z0-9]");
4

Pattern regex = Pattern.compile("[^\w\s]");
3: chỉ ra rằng biểu thức chính quy
Pattern regex = Pattern.compile("[^\w\s]");
4 không nhạy cảm với trường hợp.

Pattern regex = Pattern.compile("[^\w\s]");
5: đại diện cho bất kỳ ký tự chữ cái nào từ
Pattern regex = Pattern.compile("[^\w\s]");
6 đến
Pattern regex = Pattern.compile("[^\w\s]");
7.

Pattern regex = Pattern.compile("[^\w\s]");
8: đại diện cho bất kỳ ký tự chữ cái nào ngoại trừ
Pattern regex = Pattern.compile("[^\w\s]");
6 đến
Pattern regex = Pattern.compile("[^\w\s]");
7, chữ số và ký tự đặc biệt, tức là các ký tự có dấu.

Pattern regex = Pattern.compile("[^\p{L}\d\s_]");
1: đại diện cho bất kỳ ký tự chữ cái (có dấu hoặc không có điểm số).

Pattern regex = Pattern.compile("[^\p{L}\d\s_]");
2: Một hoặc nhiều sự xuất hiện của regex đi trước nó.

Hướng dẫn all special characters regex python - tất cả các ký tự đặc biệt trong regex python

Alan Moore

72.4K12 Huy hiệu vàng97 Huy hiệu bạc154 Huy hiệu đồng12 gold badges97 silver badges154 bronze badges

Đã trả lời ngày 17 tháng 2 năm 2016 lúc 11:26Feb 17, 2016 at 11:26

Hướng dẫn all special characters regex python - tất cả các ký tự đặc biệt trong regex python

CDAIGACDAIGAcdaiga

4.7433 huy hiệu vàng21 Huy hiệu bạc40 Huy hiệu đồng3 gold badges21 silver badges40 bronze badges

2

Hãy thử sử dụng điều này cho những điều tương tự -

Pattern regex = Pattern.compile("[^\p{L}\d\s_]");
3

Hướng dẫn all special characters regex python - tất cả các ký tự đặc biệt trong regex python

Bạn bè

10,8K5 Huy hiệu vàng42 Huy hiệu bạc58 Huy hiệu đồng5 gold badges42 silver badges58 bronze badges

Đã trả lời ngày 7 tháng 12 năm 2016 lúc 23:52Dec 7, 2016 at 23:52

AshashAsh

1.1601 Huy hiệu vàng9 Huy hiệu bạc14 Huy hiệu đồng1 gold badge9 silver badges14 bronze badges

1

Chúng ta có thể đạt được điều này bằng cách sử dụng mẫu và trình mai mối như sau:

Pattern regex = Pattern.compile("[^A-Za-z0-9]");
5

Đã trả lời ngày 20 tháng 9 năm 2018 lúc 12:18Sep 20, 2018 at 12:18

Hướng dẫn all special characters regex python - tất cả các ký tự đặc biệt trong regex python

KayvkayvKayV

12.2k10 Huy hiệu vàng92 Huy hiệu bạc135 Huy hiệu đồng10 gold badges92 silver badges135 bronze badges

Đây là biểu thức thông thường của tôi, mà tôi đã sử dụng để xóa tất cả các ký tự đặc biệt khỏi bất kỳ chuỗi nào:

Pattern regex = Pattern.compile("[^A-Za-z0-9]");
6

Jan černý

1.2042 huy hiệu vàng17 Huy hiệu bạc31 Huy hiệu đồng2 gold badges17 silver badges31 bronze badges

Đã trả lời ngày 12 tháng 11 năm 2018 lúc 10:56Nov 12, 2018 at 10:56

1

Vui lòng sử dụng điều này .. nó là đơn giản nhất.

\ p {chấm câu} Dấu câu: một trong số! "#$%& '()*+,-./:;?

https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

Pattern regex = Pattern.compile("[^A-Za-z0-9]");
7

Hướng dẫn all special characters regex python - tất cả các ký tự đặc biệt trong regex python

Nick

134K22 Huy hiệu vàng52 Huy hiệu bạc89 Huy hiệu đồng22 gold badges52 silver badges89 bronze badges

Đã trả lời ngày 21 tháng 1 năm 2019 lúc 2:36Jan 21, 2019 at 2:36

Hướng dẫn all special characters regex python - tất cả các ký tự đặc biệt trong regex python

Năng lượng năng lượngEnergy

84012 Huy hiệu bạc19 Huy hiệu đồng12 silver badges19 bronze badges

Bạn có thể sử dụng một trận đấu tiêu cực:

Pattern regex = Pattern.compile("[^\p{L}\d\s_]");
4 (cho số không hoặc nhiều ký tự)

hoặc

Pattern regex = Pattern.compile("[^\p{L}\d\s_]");
5 (cho một hoặc nhiều ký tự)

Hướng dẫn all special characters regex python - tất cả các ký tự đặc biệt trong regex python

Đã trả lời ngày 8 tháng 1 năm 2020 lúc 5:50Jan 8, 2020 at 5:50

Hướng dẫn all special characters regex python - tất cả các ký tự đặc biệt trong regex python

1

Hét lên giải pháp của Mohamed Yusuff!

Chúng ta có thể khớp với tất cả 32 ký tự đặc biệt bằng cách sử dụng phạm vi.

Pattern regex = Pattern.compile("[^A-Za-z0-9]");
8

Nhóm 1

[!-\/]

  • Khớp mã ASCII từ 33 đến 47:
  • ! "#$%& '()*+,-./

- 15 trên 32 ký tự phù hợp

Nhóm thứ 2

[:-@]

  • Khớp mã ASCII từ 58 đến 64:
  • :;?@

- 7 trên 32 ký tự phù hợp

Nhóm thứ 3

[[-`]

  • Khớp mã ASCII từ 91 đến 96:
  • [\]^_ `

- 6 trên 32 ký tự phù hợp

Nhóm thứ 4

[{-~]

  • Khớp mã ASCII từ 123 đến 126:
  • {|} ~

- 4 trên 32 ký tự phù hợp

Tổng cộng phù hợp với tất cả 32 ký tự (15+7+6+4)

Tài liệu tham khảo

Nhân vật đặc biệt Table_arranged

Bảng ASCII mở rộng

Đã trả lời ngày 17 tháng 10 lúc 10:32Oct 17 at 10:32

jas99jas99jas99

Huy hiệu đồng 2111 bronze badge

Thử cái này. Nó hoạt động trên C# nó cũng nên hoạt động trên Java. Nếu bạn muốn loại trừ các khoảng trống, chỉ cần thêm \ s vào đó

Pattern regex = Pattern.compile("[^\p{L}\d\s_]");
6

Đã trả lời ngày 20 tháng 4 năm 2020 lúc 15:37Apr 20, 2020 at 15:37

Hướng dẫn all special characters regex python - tất cả các ký tự đặc biệt trong regex python

Danvasiloiudanvasiloiudanvasiloiu

7327 Huy hiệu bạc23 Huy hiệu đồng7 silver badges23 bronze badges

Để tìm bất kỳ số lượng ký tự đặc biệt nào, hãy sử dụng mẫu Regex sau: ([^(A-ZA-Z0-9)] {1,}) ([^(A-Za-z0-9 )]{1,})

[^(A-A-Z0-9)] Điều này có nghĩa là bất kỳ ký tự nào ngoại trừ bảng chữ cái, số và không gian. {1,0} Điều này có nghĩa là một hoặc nhiều ký tự của khối trước.

Hướng dẫn all special characters regex python - tất cả các ký tự đặc biệt trong regex python

Dharman ♦

28.5K21 Huy hiệu vàng77 Huy hiệu bạc129 Huy hiệu đồng21 gold badges77 silver badges129 bronze badges

Đã trả lời ngày 5 tháng 10 năm 2020 lúc 12:01Oct 5, 2020 at 12:01

2

(^\ W $)

^-Bắt đầu chuỗi, \ w-khớp với bất kỳ ký tự không từ nào [^ a-za-z0-9_], $-kết thúc của chuỗi

Đã trả lời ngày 26 tháng 8 năm 2016 lúc 9:18Aug 26, 2016 at 9:18

Tôi sử dụng reg bên dưới để tìm ký tự đặc biệt trong chuỗi

Pattern regex = Pattern.compile("[^A-Za-z0-9]");
9

Đã trả lời ngày 8 tháng 7 lúc 2:30Jul 8 at 2:30

Hướng dẫn all special characters regex python - tất cả các ký tự đặc biệt trong regex python

Một bổ sung nhỏ để bao gồm tất cả các ký tự đặc biệt như:

Pattern regex = Pattern.compile("[^\p{L}\d\s_]");
7 và
Pattern regex = Pattern.compile("[^\p{L}\d\s_]");
8:

Một ví dụ:

[$&+,:;=?@#|'<>.^*()%!-]
0

Hướng dẫn all special characters regex python - tất cả các ký tự đặc biệt trong regex python

Đã trả lời ngày 30 tháng 9 lúc 9:32Sep 30 at 9:32

Những nhân vật đặc biệt nào được sử dụng trong Regex Python?

Biểu thức chính quy có thể chứa cả các ký tự đặc biệt và thông thường.Hầu hết các ký tự thông thường, như 'A', 'A' hoặc '0', là các biểu thức chính quy đơn giản nhất;Họ chỉ đơn giản là phù hợp với chính họ.Bạn có thể kết hợp các ký tự thông thường, vì vậy cuối cùng khớp với chuỗi 'cuối cùng'.

'$' Có nghĩa là gì ở Regex?

$ có nghĩa là "khớp với phần cuối của chuỗi" (vị trí sau ký tự cuối cùng trong chuỗi).Cả hai đều được gọi là neo và đảm bảo rằng toàn bộ chuỗi được khớp thay vì chỉ là một chuỗi con.Match the end of the string" (the position after the last character in the string). Both are called anchors and ensure that the entire string is matched instead of just a substring.

'\ S +' trong Python là gì?

Vì \ s+ có nghĩa là một chuỗi các ký tự không phải là màu trắng và \ s+ có nghĩa là một chuỗi các ký tự khoảng trắng, điều này phù hợp chính xác là một phần của đầu ra.a string of non-whitespace characters” and \s+ means “a string of whitespace characters”, this correctly matches that part of the output.

Điều này có nghĩa là gì trong regex ([]) \ 1?

Backreference \ 1 (Backslash One) tham chiếu nhóm chụp đầu tiên.\ 1 khớp với cùng một văn bản được khớp bởi nhóm chụp đầu tiên./ Trước đó là một nhân vật theo nghĩa đen.references the first capturing group. \1 matches the exact same text that was matched by the first capturing group. The / before it is a literal character.