Python regex chữ và số và gạch dưới

Trong bài viết này, chúng ta sẽ tìm hiểu cách xác minh một chuỗi chỉ chứa các chữ cái, số, dấu gạch dưới và dấu gạch ngang trong Python

Chiến lược đầu tiên sử dụng các biểu thức chính quy. Để sử dụng thư viện re, hãy nhập nó và cài đặt nó nếu nó chưa được cài đặt. Chúng tôi sử dụng cụm từ thông dụng "^[A-Za-z0-9_-]*$" sau khi nhập thư viện lại

Nếu chuỗi chứa bất kỳ ký tự đặc biệt nào ngoài Bảng chữ cái và Số, điều này sẽ trả về Sai;

ví dụ 1

Trong ví dụ được đưa ra bên dưới, chúng tôi đang thực hiện cùng một chương trình như trên và chúng tôi đang lấy một chuỗi khác làm đầu vào -

Để thực hiện việc này, bạn cần nắm bắt các trường tên máy chủ lưu trữ, trung tâm dữ liệu và loại thiết bị trong các biến và sử dụng chúng ở đầu ra. Biểu thức chính quy sau đây sẽ làm điều này

.*?_[[a-zA-Z0-9]+]_[[a-zA-Z0-9]+]_[[a-zA-Z0-9]+]_.*

Vì có ba bộ dấu ngoặc đơn nên các biến \1, \2 và \3 sẽ được điền

Sau đó, bạn có thể sử dụng định dạng sau để đảm bảo đầu ra ở định dạng ưa thích của mình

\2-\1-\3

Do đó, đầu ra của bạn sẽ là

hostname1-Miami-filer
hostname2-Tampa-switch
hostname3-Boston-windows2K
hostname4-Raleigh-solaris

Dấu gạch nối giữa các biến cung cấp một ví dụ về văn bản cố định được chèn vào đầu ra được định dạng

Ví dụ 1 hiển thị tên vùng

Trong ví dụ này, bạn sử dụng biểu thức chính quy để trích xuất tên Máy chủ lưu trữ từ tên khu vực. Bạn có thể tạo biểu thức chính quy nếu bạn có thứ gì đó tương tự như tên vùng sau

  • S0032_myComputer1Name-HBA0
  • S0434_myComputer1Name-HBA1
  • S0432_myComputer1Name-HBA3

Biểu thức chính quy mà bạn có thể sử dụng để nắm bắt tên máy chủ sẽ là

 S[0-9]+_[[a-zA-Z0-9]*][_-]HBA[0-9] 

Kết quả là kết quả khớp với tất cả các vùng bắt đầu bằng S, theo sau là bất kỳ tổ hợp chữ số nào , theo sau là dấu gạch dưới, tên máy chủ chứa chữ và số [myComputer1Name], dấu gạch dưới hoặc dấu gạch ngang, chữ in hoa HBA và một chữ số [0-9 . Tên máy chủ được lưu trữ trong biến \1

Biểu thức chính quy có thể được chia thành các thành phần của nó

  • "S" đại diện cho tên vùng và bắt đầu biểu thức. Điều này chỉ khớp với chữ "S" ở đầu tên khu vực
  • Các ký tự [0-9] trong ngoặc chỉ ra rằng những gì theo sau "S" phải là một chữ số từ 0 đến 9, bao gồm
  • Dấu + thể hiện sự xuất hiện của thông tin trong ngoặc trước đó phải tồn tại 1 hoặc nhiều lần
  • _ [gạch dưới] có nghĩa là các chữ số sau S phải được theo sau ngay lập tức bởi chỉ một ký tự gạch dưới trong tên khu vực. Trong ví dụ này, quy ước đặt tên vùng sử dụng dấu gạch dưới để tách tên vùng khỏi tên máy chủ
  • Sau dấu gạch dưới bắt buộc, dấu ngoặc đơn cho biết mẫu chứa bên trong sẽ được lưu trữ trong biến \1
  • Các ký tự trong ngoặc vuông [a-zA-Z0-9] cho biết rằng các ký tự được so khớp là tất cả các chữ cái [không phân biệt chữ hoa chữ thường] và số
  • Dấu * [dấu hoa thị] sau dấu ngoặc cho biết rằng các ký tự trong dấu ngoặc xuất hiện 0 lần trở lên
  • Các ký tự trong ngoặc [_-] [gạch dưới và gạch ngang] cho biết rằng mẫu chữ và số phải được theo sau bởi dấu gạch dưới hoặc dấu gạch ngang
  • Các chữ cái HBA trong biểu thức chính quy chỉ ra rằng chuỗi ký tự chính xác này phải xuất hiện trong tên vùng
  • Tập hợp cuối cùng của các ký tự trong ngoặc [0-9] khớp với một chữ số từ 0 đến 9, bao gồm cả

ví dụ 2

Trong ví dụ này, bỏ qua dấu gạch dưới đầu tiên "_", sau đó khớp E và mọi thứ sau đó cho đến dấu "_" thứ hai, sau đó bỏ qua mọi thứ sau đó

Vùng. Z_E2FHDBS01_E1NETAPP

tên máy chủ. E2FHDBS01

RegExp. . *?_[E. *?]_. *?

ví dụ 3

Dấu ngoặc đơn "[ ]" xung quanh phần cuối cùng trong Biểu thức chính quy [bên dưới] xác định phần nào là tên máy chủ. Nếu bạn muốn VSAN3 làm tên máy chủ, nó sẽ là. [a-zA-Z0-9]+_[[a-zA-Z0-9]+]. *

Vùng. A_VSAN3_SR48KENT_A_CX2578_SPA0

tên máy chủ. SR48KENT

RegExp. [a-zA-Z0-9]+_[a-zA-Z0-9]+_[[a-zA-Z0-9]+]. *

Ví dụ 4 hiển thị một mẫu đặt tên phức tạp hơn

Bạn có thể tạo biểu thức chính quy nếu bạn có thứ gì đó tương tự như tên vùng sau

  • myComputerName123-HBA1_Symm1_FA3
  • myComputerName123-HBA2_Symm1_FA5
  • myComputerName123-HBA3_Symm1_FA7

Biểu thức chính quy mà bạn có thể sử dụng để nắm bắt chúng sẽ là

[[a-zA-Z0-9]*]_.*

Biến \1 sẽ chỉ chứa myComputerName123 sau .

Biểu thức chính quy có thể được chia thành các thành phần của nó

  • Dấu ngoặc đơn cho biết mẫu chứa bên trong sẽ được lưu trữ trong biến \1
  • Các ký tự trong ngoặc [a-zA-Z0-9] có nghĩa là bất kỳ chữ cái nào [không phân biệt chữ hoa chữ thường] hoặc chữ số sẽ khớp
  • Dấu * [dấu hoa thị] sau dấu ngoặc cho biết rằng các ký tự trong dấu ngoặc xuất hiện 0 lần trở lên
  • Ký tự _ [gạch dưới] trong biểu thức chính quy có nghĩa là tên khu vực phải có dấu gạch dưới ngay sau chuỗi chữ và số khớp với dấu ngoặc trước đó
  • Các. [dấu chấm] khớp với bất kỳ ký tự nào [ký tự đại diện]
  • Dấu * [dấu hoa thị] cho biết ký tự đại diện của khoảng thời gian trước đó có thể xảy ra 0 hoặc nhiều lần

    Nói cách khác, sự kết hợp. * biểu thị bất kỳ ký tự nào, bất kỳ số lần nào

Ví dụ 5 hiển thị tên vùng không có mẫu

Bạn có thể tạo biểu thức chính quy nếu bạn có thứ gì đó tương tự như tên vùng sau

  • myComputerName_HBA1_Symm1_FA1
  • myComputerName123_HBA1_Symm1_FA1

Biểu thức chính quy mà bạn có thể sử dụng để nắm bắt chúng sẽ là

[.*?]_.*

Biến \1 sẽ chứa myComputerName [trong ví dụ về tên vùng đầu tiên] hoặc myComputerName123 [trong ví dụ về tên vùng thứ hai]. Do đó, biểu thức chính quy này sẽ khớp với mọi thứ trước dấu gạch dưới đầu tiên

Biểu thức chính quy có thể được chia thành các thành phần của nó

  • Dấu ngoặc đơn cho biết mẫu chứa bên trong sẽ được lưu trữ trong biến \1
  • Các. * [dấu hoa thị] khớp với bất kỳ ký tự nào, bất kỳ số lần nào
  • Dấu * [dấu hoa thị] sau dấu ngoặc cho biết rằng các ký tự trong dấu ngoặc xuất hiện 0 lần trở lên
  • Các ? . Điều này buộc nó dừng khớp ở dấu gạch dưới đầu tiên, thay vì dấu gạch dưới cuối cùng
  • Các nhân vật _. * khớp với dấu gạch dưới đầu tiên được tìm thấy và tất cả các ký tự theo sau nó

Ví dụ 6 hiển thị tên máy tính có mẫu

Bạn có thể tạo biểu thức chính quy nếu bạn có thứ gì đó tương tự như tên vùng sau

  • Lưu trữ1_Switch1_myComputerName123A_A1_FC1
  • Storage2_Switch2_myComputerName123B_A2_FC2
  • Storage3_Switch3_myComputerName123T_A3_FC3

Biểu thức chính quy mà bạn có thể sử dụng để nắm bắt chúng sẽ là

 .*?_.*?_[[a-zA-Z0-9]*[ABT]]_.*

Do quy ước đặt tên vùng có nhiều mẫu hơn, nên chúng tôi có thể sử dụng biểu thức trên, biểu thức này sẽ khớp với tất cả các phiên bản của tên máy chủ [myComputerName trong ví dụ] kết thúc bằng A, B hoặc T, đặt tên máy chủ đó vào

Biểu thức chính quy có thể được chia thành các thành phần của nó

  • Các. * [dấu hoa thị] khớp với bất kỳ ký tự nào, bất kỳ số lần nào
  • Các ? . Điều này buộc nó dừng khớp ở dấu gạch dưới đầu tiên, thay vì dấu gạch dưới cuối cùng
  • Ký tự gạch dưới khớp với dấu gạch dưới đầu tiên trong tên vùng
  • Như vậy, đầu tiên. Tổ hợp *?_ khớp với các ký tự Storage1_ trong ví dụ tên vùng đầu tiên
  • Thư hai. Tổ hợp *?_ hoạt động giống như tổ hợp đầu tiên, nhưng khớp với Switch1_ trong ví dụ về tên vùng đầu tiên
  • Dấu ngoặc đơn cho biết mẫu chứa bên trong sẽ được lưu trữ trong biến \1
  • Các ký tự trong ngoặc [a-zA-Z0-9] có nghĩa là bất kỳ chữ cái nào [không phân biệt chữ hoa chữ thường] hoặc chữ số sẽ khớp
  • Dấu * [dấu hoa thị] sau dấu ngoặc cho biết rằng các ký tự trong dấu ngoặc xuất hiện 0 lần trở lên
  • Các ký tự trong ngoặc trong biểu thức chính quy [ABT] khớp với một ký tự trong tên vùng phải là A, B hoặc T
  • Dấu _ [gạch dưới] sau dấu ngoặc đơn cho biết rằng ký tự [ABT] khớp phải được theo sau bởi dấu gạch dưới
  • Các. * [dấu hoa thị] khớp với bất kỳ ký tự nào, bất kỳ số lần nào

Do đó, kết quả của việc này sẽ khiến biến \1 chứa bất kỳ chuỗi chữ và số nào

  • đứng trước một số ký tự chữ và số và hai dấu gạch dưới
  • được theo sau bởi dấu gạch dưới [và sau đó là bất kỳ số lượng ký tự chữ và số nào]
  • có ký tự cuối cùng là A, B hoặc T, trước dấu gạch dưới thứ ba

Ví dụ 7

Vùng. myComputerName123_HBA1_Symm1_FA1

tên máy chủ. myComputerName123

RegExp. [[a-zA-Z0-9]+]_. *

Ví dụ 8

Ví dụ này tìm thấy mọi thứ trước _ đầu tiên

Vùng. MyComputerName_HBA1_Symm1_FA1

MyComputerName123_HBA1_Symm1_FA1

tên máy chủ. Tên máy tính của tôi

RegExp. [. *?]_. *

Ví dụ 9

Ví dụ này tìm mọi thứ sau _ đầu tiên và cho đến _ thứ hai

Vùng. Z_MyComputerName_StorageName

tên máy chủ. Tên máy tính của tôi

RegExp. . *?_[. *?]_. *?

Ví dụ 10

Ví dụ này trích xuất "MyComputerName123" từ ví dụ vùng

Vùng. Lưu trữ1_Switch1_MyComputerName123A_A1_FC1

Storage2_Switch2_MyComputerName123B_A2_FC2

Storage3_Switch3_MyComputerName123T_A3_FC3

tên máy chủ. MyComputerName123

RegExp. . *?_. *?_[[a-zA-Z0-9]+]*[ABT]_. *

Ví dụ 11

Vùng. Lưu trữ1_Switch1_MyComputerName123A_A1_FC1

tên máy chủ. MyComputerName123A

RegExp. . *?_. *?_[[a-zA-z0-9]+]_. *?_

Ví dụ 12

^ [dấu tròn hoặc dấu mũ] bên trong dấu ngoặc vuông phủ định biểu thức, ví dụ: [^Ff] có nghĩa là mọi thứ trừ chữ hoa hoặc chữ thường F và [^a-z] có nghĩa là mọi thứ trừ chữ thường từ a đến z và trong trường hợp trên, mọi thứ . Câu lệnh định dạng thêm dấu "-" vào tên máy chủ đầu ra

Vùng. mhs_apps44_d_A_10a0_0429

tên máy chủ. mhs-apps44-d

RegExp. [[^_]+]_[[AB]]. *Định dạng trong OnCommand Insight . \1-\2 [[^_]+]_

[[^_]+]_[[^_]+]. *Định dạng trong OnCommand Insight . \1-\2-\3

Ví dụ 13

Trong ví dụ này, bí danh lưu trữ được phân tách bằng "\" và biểu thức cần sử dụng "\\" để xác định rằng thực sự có "\" đang được sử dụng trong chuỗi và những ký tự đó không phải là một phần của chính biểu thức đó

Dấu gạch dưới có phải là ký tự đặc biệt trong regex không?

[0-9] —Chuỗi có thể chứa bất kỳ số nào trong khoảng từ 0–9. [_-] —Chuỗi có thể chứa dấu gạch dưới hoặc dấu gạch ngang. Cả dấu gạch dưới và dấu gạch ngang đều được gọi là ký tự đặc biệt . Các ký tự đặc biệt bao gồm mọi ký tự không phải chữ và số, chẳng hạn như dấu chấm câu hoặc ký hiệu.

Regex cho chữ và số là gì?

Sự biểu lộ
Sự miêu tả
[ ]
cũng có thể được sử dụng trên một loạt các ký tự được phân tách bằng ký tự –
[0-9]
phù hợp với bất kỳ chữ số
[A-Z]
khớp với bất kỳ ký tự chữ hoa nào
[A-Za-z0-9]
khớp với bất kỳ ký tự chữ và số nào
Chuỗi biểu thức chính quy chuẩn - Forcepointwww. trang mạng. com › thư viện › web › lưu trữ › dsc_admin › standard_regexnull

Chữ và số và dấu gạch dưới là gì?

Trong khoa học máy tính, giá trị chữ và số thường có nghĩa là ký tự đầu tiên không phải là số mà là ký tự chữ cái hoặc dấu gạch dưới . Sau đó, ký tự có thể là 0-9 , A-Z , a-z hoặc dấu gạch dưới [ _ ]. và đặt nó trong ngôn ngữ phát triển của bạn.

'$' nghĩa là gì trong 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ỉ một chuỗi con.

Chủ Đề