Ví dụ đối sánh regex python

Biểu thức chính quy [Biểu thức chính quy] hay Regex trong Python có thể được định nghĩa là chuỗi ký tự được sử dụng để tìm kiếm một mẫu trong chuỗi. Hỗ trợ mô-đun lại cung cấp để sử dụng regex trong chương trình python. Mô-đun bắn lại ra một ngoại lệ nếu có lỗi xảy ra trong khi sử dụng biểu thức chính quy

Bạn không thể nhập mô-đun lại để sử dụng các chức năng regex trong python


Các hàm Regex

Các hàm regex sau được sử dụng trong Python

STTHàmMô tả1matchHàm này khớp với biểu thức chính quy mẫu trong chuỗi với cờ tùy chọn. Nó trả về true nếu một kết quả khớp được tìm thấy trong chuỗi nếu nó không trả về false. 2searchHàm này trả về các đối tượng khớp nếu có một kết quả khớp được tìm thấy trong chuỗi. 3findall Nó trả về một danh sách chứa tất cả các kết quả khớp của một mẫu trong chuỗi. 4splitTrả về một danh sách trong chuỗi đó đã được phân chia theo từng kết quả khớp. 5subThay thế một hoặc nhiều kết quả khớp trong chuỗi

Build biểu thức chính quy

Một biểu thức chính quy có thể được hình thành bằng cách sử dụng kết hợp các siêu ký tự, ký tự đặc biệt và bộ

Siêu ký tự

Siêu ký tự là một ký tự có ý nghĩa nhất định

Metacharacter Mô tả Ví dụ[]Đó là đại diện cho một tập hợp các ký tự. "[a-z]"\Nó đại diện cho ký tự đặc biệt. "\r". Nó đại diện cho bất kỳ ký tự nào xuất hiện ở một số nơi cụ thể. "Ja. v. "^Nó đại diện cho mẫu có mặt ở đầu chuỗi. "^Java"$Nó đại diện cho mẫu có mặt ở cuối chuỗi. "viettuts"*Nó đại diện cho không hoặc nhiều lần xuất hiện của một mẫu trong chuỗi. "hello*"+Nó đại diện cho một hoặc nhiều lần xuất hiện của một mẫu trong chuỗi. "hello+"{}Số lần xuất hiện chỉ định của một mẫu trong chuỗi. "java{2}". Nó biểu diễn cho cái này hoặc cái kia [điều kiện hoặc]. "trăn2. python3"[]Nhóm các thành phần

Special character

Kí tự đặc biệt là các chuỗi có chứa \ theo sau là một trong các ký tự

Ký tự mô tả\Nó trả về một kết quả khớp nếu các ký tự chỉ được định sẵn ở đầu chuỗi. \bNó trả về một kết quả khớp nếu các ký tự được chỉ định có mặt ở đầu hoặc chuỗi cuối. \BNó trả về một kết quả khớp nếu các ký tự được định sẵn chỉ có mặt ở đầu chuỗi nhưng không có ở cuối chuỗi. \d Nó trả về một kết quả khớp nếu chuỗi chứa các chữ số [0-9]. \DNó trả về một kết quả khớp nếu chuỗi không chứa các chữ số [0-9]. \sNó trả về một kết quả khớp nếu chuỗi chứa bất kỳ ký tự khoảng trắng nào. \SNó trả về một kết quả khớp nếu chuỗi không chứa bất kỳ ký tự khoảng trắng nào. \wNó trả về một kết quả khớp nếu chuỗi chứa bất kỳ ký tự nào từ bất kỳ ký tự nào. \WNó trả về một kết quả khớp nếu chuỗi không chứa bất kỳ từ nào. \ZTrả về một kết quả khớp nếu các ký tự được chỉ định ở cuối chuỗi

Bộ

Một tập hợp là một nhóm các ký tự được đưa ra bên trong một cặp dấu ngoặc kép. Nó đại diện cho nghĩa đặc biệt

STTSetMô tả1[arn]Trả về một kết quả khớp nếu chuỗi chứa bất kỳ ký tự nào được chỉ định trong tập hợp. 2[a-n]Trả chứa về một kết quả khớp nếu chuỗi bất kỳ ký tự nào từ a đến n. 3[^arn]Trả chứa về một kết quả khớp nếu chuỗi ký tự ngoại trừ a, r và n. 4[0123]Trả về một kết quả khớp nếu chuỗi chứa bất kỳ chữ số nào được chỉ định. 5[0-9]Trả về chứa một kết quả khớp nếu chuỗi bất kỳ chữ số nào trong khoảng từ 0 đến 9. 6[0-5][0-9]Trả về một kết quả khớp nếu chuỗi chứa bất kỳ chữ số nào trong khoảng từ 00 đến 59. 10[a-zA-Z]Trả về một kết quả khớp nếu chuỗi chứa bất kỳ bảng chữ cái nào [chữ thường hoặc chữ hoa]

Hàm findall[]

Phương thức này trả về một danh sách chứa danh sách tất cả các kết quả khớp của mẫu trong chuỗi. Nó trả về các mẫu theo thứ tự chúng tôi đã tìm thấy. Nếu không có kết quả khớp, thì một danh sách trống sẽ được trả về. Ví dụ

import re  
str = "Xin chào Bạn! Bạn đang học bài Regex trong Python."  
matches = re.findall["Bạn", str]  
print[matches]  

Kết quả

Match object [đối sánh kết quả]

Đối tượng khớp với thông tin tìm kiếm và đầu ra. Nếu không tìm thấy kết quả phù hợp, đối tượng Không được trả về. Ví dụ

Tôi muốn có thể tìm thấy kết quả trùng khớp thứ hai trong dữ liệu sê-ri bằng cách sử dụng lại. phương pháp tìm kiếm. Cho đến nay tôi đã có thể sử dụng lại. tìm kiếm biểu thức chính quy để tìm trận đấu đầu tiên

Nội dung chính Hiển thị

  • Làm cách nào để khớp một chuỗi cụ thể trong Python?
  • Match[] làm gì trong Python?
  • Làm cách nào để khớp một chuỗi với một chuỗi khác?
  • Làm thế nào để bạn in một đối tượng phù hợp trong Python?

Làm cách nào để tôi tìm kiếm các chữ cái PR và in các chữ số ở bên phải của nó sau khi tìm thấy kết quả khớp đầu tiên trong cùng một chuỗi nối tiếp?

Đoạn mã dưới đây hiển thị kết nối với thiết bị thông qua cổng COM. Lưu trữ dữ liệu thành nối tiếp và tìm kiếm các chữ số ở bên phải của từ 'ID' trên cùng một dòng

dữ liệu nối tiếp. aassddffggID. 12345qqwwerrttPR. 54321zzxxxcc

ser = serial.Serial['COM1', 115200, timeout=0, parity=serial.PARITY_NONE, 
stopbits=serial.STOPBITS_ONE, rtscts=0]
print[ser]
time.sleep[0.5]
serial = ser.read[9999]

match = re.search['ID:[\d*]', serial]
print[match.group[0]]

Cập nhật

Tôi muốn sửa đổi điều này lại. tìm kiếm để cho phép các tham số được chuyển đến ID và PR. Tôi đã có thể chuyển một giá trị cho ID nhưng dường như không thể nhận các giá trị được chuyển cho cả hai mà không gặp lỗi

Bit này hoạt động

id = 12345 pr = 54321

if re.search[r"ID:{}".format[id], serial]
    print["ID match found"]
else:
    print["ID match not found"]

#output
"ID match found"

#For both ID and PR I've tried
if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
    print["PR match found"]
else:
    print["PR match not found"]

#output
"SyntaxError: invalid syntax" 

Ghi chú. Nó không giống như dấu phẩy đảo ngược sau dấu ngoặc nhọn đã đóng sau PR. {}

Bất kỳ đề xuất về thay đổi cú pháp?

Điều kiện tiên quyết. Python RegEx

Bạn có thể quen với việc tìm kiếm văn bản bằng cách nhấn ctrl-F và nhập các từ bạn đang tìm kiếm. Biểu thức chính quy tiến thêm một bước. Chúng cho phép bạn chỉ định một mẫu văn bản để tìm kiếm.
Biểu thức chính quy, gọi tắt là biểu thức chính quy, là mô tả cho một mẫu văn bản. Ví dụ: \d trong biểu thức chính quy là viết tắt của ký tự chữ số — nghĩa là bất kỳ chữ số đơn nào từ 0 đến 9.

  • Biểu thức chính quy sau được sử dụng trong Python để khớp một chuỗi gồm ba số, dấu gạch nối, ba số khác, dấu gạch nối khác và bốn số.
    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
  • Biểu thức chính quy có thể phức tạp hơn nhiều. Ví dụ: thêm số 3 vào dấu ngoặc nhọn [{3}] sau một mẫu giống như nói: “ Ghép mẫu này ba lần. ” Vì vậy, regex
    \d{3}-\d{3}-\d{4}
    ngắn hơn một chút

    [Nó phù hợp với định dạng số điện thoại chính xác. ]

Tạo đối tượng Regex

Tất cả các hàm regex trong Python đều có trong mô-đun re

import re

Để tạo đối tượng Regex khớp với mẫu số điện thoại, hãy nhập thông tin sau vào trình bao tương tác

phoneNumRegex = re.compile[r'\d\d\d-\d\d\d-\d\d\d\d']

Bây giờ biến phoneNumRegex chứa một đối tượng Regex

Đối sánh các đối tượng regex

Phương thức search[] của đối tượng Regex tìm kiếm chuỗi mà nó được truyền để tìm bất kỳ kết quả khớp nào với biểu thức chính quy. Các đối tượng khớp có một phương thức group[] sẽ trả về văn bản khớp thực tế từ chuỗi đã tìm kiếm

Any other string would not match the pattern.
\d\d\d-\d\d\d-\d\d\d\d
4
Any other string would not match the pattern.
\d\d\d-\d\d\d-\d\d\d\d
5

Any other string would not match the pattern.
\d\d\d-\d\d\d-\d\d\d\d
6
Any other string would not match the pattern.
\d\d\d-\d\d\d-\d\d\d\d
7
Any other string would not match the pattern.
\d\d\d-\d\d\d-\d\d\d\d
8
Any other string would not match the pattern.
\d\d\d-\d\d\d-\d\d\d\d
9
\d{3}-\d{3}-\d{4}
0
\d{3}-\d{3}-\d{4}
1
\d{3}-\d{3}-\d{4}
2

\d{3}-\d{3}-\d{4}
3
Any other string would not match the pattern.
\d\d\d-\d\d\d-\d\d\d\d
7
\d{3}-\d{3}-\d{4}
5______46
\d{3}-\d{3}-\d{4}
2

\d{3}-\d{3}-\d{4}
8
\d{3}-\d{3}-\d{4}
9____50
import re
1
import re
2

đầu ra

if re.search[r"ID:{}".format[id], serial]
    print["ID match found"]
else:
    print["ID match not found"]

#output
"ID match found"

#For both ID and PR I've tried
if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
    print["PR match found"]
else:
    print["PR match not found"]

#output
"SyntaxError: invalid syntax" 
6

Các bước đối sánh biểu thức chính quy

Mặc dù có một số bước để sử dụng biểu thức chính quy trong Python, nhưng mỗi bước đều khá đơn giản

  1. Nhập mô-đun regex với nhập lại
  2. Tạo một đối tượng Regex với re. chức năng biên dịch[]. [Hãy nhớ sử dụng một chuỗi thô. ]
  3. Truyền chuỗi bạn muốn tìm kiếm vào phương thức search[] của đối tượng Regex. Điều này trả về một đối tượng Match
  4. Gọi phương thức group[] của đối tượng Match để trả về một chuỗi văn bản khớp thực tế
  5. Nhóm với dấu ngoặc đơn

    1. Đối tượng phù hợp. Giả sử bạn muốn tách mã vùng khỏi phần còn lại của số điện thoại. Thêm dấu ngoặc đơn sẽ tạo các nhóm trong regex. [\d\d\d]-[\d\d\d-\d\d\d\d]. Sau đó, bạn có thể sử dụng phương thức đối tượng khớp nhóm[] để lấy văn bản khớp từ chỉ một nhóm

      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      4
      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      5

      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      6
      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      7
      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      8
      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      9
      \d{3}-\d{3}-\d{4}
      0
      phoneNumRegex = re.compile[r'\d\d\d-\d\d\d-\d\d\d\d']
      0
      \d{3}-\d{3}-\d{4}
      2

      \d{3}-\d{3}-\d{4}
      3
      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      7
      \d{3}-\d{3}-\d{4}
      5______46
      \d{3}-\d{3}-\d{4}
      2

      \d{3}-\d{3}-\d{4}
      8
      phoneNumRegex = re.compile[r'\d\d\d-\d\d\d-\d\d\d\d']
      8
      phoneNumRegex = re.compile[r'\d\d\d-\d\d\d-\d\d\d\d']
      9
      if re.search[r"ID:{}".format[id], serial]
          print["ID match found"]
      else:
          print["ID match not found"]
      
      #output
      "ID match found"
      
      #For both ID and PR I've tried
      if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
          print["PR match found"]
      else:
          print["PR match not found"]
      
      #output
      "SyntaxError: invalid syntax" 
      
      60

      ĐẦU RA

      \d{3}-\d{3}-\d{4}
      5
    2. Truy xuất tất cả các nhóm cùng một lúc. Nếu bạn muốn truy xuất tất cả các nhóm cùng một lúc, hãy sử dụng phương thức groups[]—lưu ý dạng số nhiều của tên

      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      4
      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      5

      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      6
      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      7
      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      8
      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      9
      \d{3}-\d{3}-\d{4}
      0
      phoneNumRegex = re.compile[r'\d\d\d-\d\d\d-\d\d\d\d']
      0
      \d{3}-\d{3}-\d{4}
      2

      \d{3}-\d{3}-\d{4}
      3
      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      7
      \d{3}-\d{3}-\d{4}
      5______46
      \d{3}-\d{3}-\d{4}
      2

      \d{3}-\d{3}-\d{4}
      8
      \d{3}-\d{3}-\d{4}
      56

      ĐẦU RA

      phoneNumRegex = re.compile[r'\d\d\d-\d\d\d-\d\d\d\d']
      2
    3. sử dụng mo. các nhóm. mo. groups[] sẽ trả về một bộ gồm nhiều giá trị, bạn có thể sử dụng thủ thuật gán nhiều giá trị để gán từng giá trị cho một biến riêng biệt, như trong Mã vùng sau, mainNumber = mo. nhóm [] dòng

      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      4
      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      5

      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      6
      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      7
      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      8
      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      9
      \d{3}-\d{3}-\d{4}
      0
      phoneNumRegex = re.compile[r'\d\d\d-\d\d\d-\d\d\d\d']
      0
      \d{3}-\d{3}-\d{4}
      2

      \d{3}-\d{3}-\d{4}
      3
      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      7
      \d{3}-\d{3}-\d{4}
      5______46
      \d{3}-\d{3}-\d{4}
      2

      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      71
      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      7
      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      73

      \d{3}-\d{3}-\d{4}
      8
      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      75

      ĐẦU RA

      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      7
    4. Phù hợp với một dấu ngoặc đơn. Dấu ngoặc đơn có ý nghĩa đặc biệt trong biểu thức chính quy, nhưng bạn sẽ làm gì nếu cần khớp dấu ngoặc đơn trong văn bản của mình. Chẳng hạn, có thể các số điện thoại bạn đang cố so khớp có mã vùng được đặt trong ngoặc đơn. Trong trường hợp này, bạn cần thoát ký tự [ và ] bằng dấu gạch chéo ngược. Nhập thông tin sau vào vỏ tương tác

      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      4
      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      5

      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      6
      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      7
      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      8
      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      9
      \d{3}-\d{3}-\d{4}
      0
      if re.search[r"ID:{}".format[id], serial]
          print["ID match found"]
      else:
          print["ID match not found"]
      
      #output
      "ID match found"
      
      #For both ID and PR I've tried
      if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
          print["PR match found"]
      else:
          print["PR match not found"]
      
      #output
      "SyntaxError: invalid syntax" 
      
      03
      \d{3}-\d{3}-\d{4}
      2

      \d{3}-\d{3}-\d{4}
      3
      Any other string would not match the pattern.
      \d\d\d-\d\d\d-\d\d\d\d
      7
      \d{3}-\d{3}-\d{4}
      5____208
      \d{3}-\d{3}-\d{4}
      2

      \d{3}-\d{3}-\d{4}
      8
      phoneNumRegex = re.compile[r'\d\d\d-\d\d\d-\d\d\d\d']
      8
      phoneNumRegex = re.compile[r'\d\d\d-\d\d\d-\d\d\d\d']
      9
      if re.search[r"ID:{}".format[id], serial]
          print["ID match found"]
      else:
          print["ID match not found"]
      
      #output
      "ID match found"
      
      #For both ID and PR I've tried
      if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
          print["PR match found"]
      else:
          print["PR match not found"]
      
      #output
      "SyntaxError: invalid syntax" 
      
      60

      ĐẦU RA

      if re.search[r"ID:{}".format[id], serial]
          print["ID match found"]
      else:
          print["ID match not found"]
      
      #output
      "ID match found"
      
      #For both ID and PR I've tried
      if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
          print["PR match found"]
      else:
          print["PR match not found"]
      
      #output
      "SyntaxError: invalid syntax" 
      
      0

      Các ký tự thoát \[ và \] trong chuỗi thô được chuyển tới. compile[] sẽ khớp với các ký tự trong ngoặc đơn thực tế

    Kết hợp nhiều nhóm với đường ống

    Các. nhân vật được gọi là một đường ống. Bạn có thể sử dụng nó ở bất cứ đâu bạn muốn khớp với một trong nhiều biểu thức. Ví dụ: biểu thức chính quy r'Batman. Tina Fey’ sẽ phù hợp với ‘Batman’ hoặc ‘Tina Fey’

    Khi cả Batman và Tina Fey xuất hiện trong chuỗi được tìm kiếm, lần xuất hiện đầu tiên của văn bản phù hợp sẽ được trả về dưới dạng đối tượng Match. Nhập thông tin sau vào vỏ tương tác

    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
    4
    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
    5

    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    16
    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
    7
    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
    8
    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
    9
    \d{3}-\d{3}-\d{4}
    0
    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    21
    \d{3}-\d{3}-\d{4}
    2

    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    23
    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
    7
    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    25
    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    26
    \d{3}-\d{3}-\d{4}
    2

    _______48____229

    ĐẦU RA

    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    1

    Kết hợp các lần lặp lại cụ thể với Dấu ngoặc nhọn

    Nếu bạn có một nhóm mà bạn muốn lặp lại một số lần cụ thể, hãy theo dõi nhóm trong biểu thức chính quy của bạn với một số trong dấu ngoặc nhọn. Ví dụ: biểu thức chính quy [Ha]{3} sẽ khớp với chuỗi 'HaHaHa', nhưng nó sẽ không khớp với 'HaHa', vì chuỗi sau chỉ có hai lần lặp lại của nhóm [Ha]

    Thay vì một số, bạn có thể chỉ định một phạm vi bằng cách viết giá trị tối thiểu, dấu phẩy và giá trị tối đa vào giữa các dấu ngoặc nhọn. Ví dụ: biểu thức chính quy [Ha]{3, 5} sẽ khớp với 'HaHaHa', 'HaHaHaHa' và 'HaHaHaHaHa'

    Bạn cũng có thể bỏ qua số thứ nhất hoặc số thứ hai trong dấu ngoặc nhọn để không giới hạn số tối thiểu hoặc tối đa. Ví dụ: [Ha]{3, } sẽ khớp với ba hoặc nhiều phiên bản của nhóm [Ha], trong khi [Ha]{, 5} sẽ khớp từ 0 đến năm phiên bản. Dấu ngoặc nhọn có thể giúp làm cho biểu thức chính quy của bạn ngắn hơn. Hai biểu thức chính quy này khớp với các mẫu giống hệt nhau

    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    2

    Và hai biểu thức chính quy này cũng khớp với các mẫu giống hệt nhau

    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    3

    Nhập thông tin sau vào vỏ tương tác

    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
    4
    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
    5

    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    32
    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
    7
    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
    8
    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
    9
    \d{3}-\d{3}-\d{4}
    0
    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    37
    \d{3}-\d{3}-\d{4}
    2

    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    23
    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
    7
    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    41
    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    42
    \d{3}-\d{3}-\d{4}
    2

    _______48____229

    ĐẦU RA

    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    4

    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
    4
    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
    5

    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    32
    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
    7
    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
    8
    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
    9
    \d{3}-\d{3}-\d{4}
    0
    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    37
    \d{3}-\d{3}-\d{4}
    2

    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    55
    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
    7
    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    41
    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    58______42
    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
    7
    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
    7
    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    62

    \d{3}-\d{3}-\d{4}
    8
    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    64

    ĐẦU RA

    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    5

    Ở đây, [Ha]{3} khớp với 'HaHaHa' chứ không khớp với 'Ha'. Vì nó không khớp với 'Ha', tìm kiếm [] trả về Không có

    Kết hợp tùy chọn với Dấu chấm hỏi

    Đôi khi có một mẫu mà bạn chỉ muốn khớp tùy chọn. Đó là, biểu thức chính quy sẽ tìm thấy kết quả phù hợp cho dù có hay không có đoạn văn bản đó. Các ? . Ví dụ: nhập thông tin sau vào trình bao tương tác

    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
    4
    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
    5

    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    67
    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
    7
    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
    8
    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
    9
    \d{3}-\d{3}-\d{4}
    0
    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    72
    \d{3}-\d{3}-\d{4}
    2

    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    23
    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
    7
    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    76____277
    \d{3}-\d{3}-\d{4}
    2

    _______48____229

    ĐẦU RA

    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    1

    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
    4
    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
    5

    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    67
    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
    7
    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
    8
    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
    9
    \d{3}-\d{3}-\d{4}
    0
    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    72
    \d{3}-\d{3}-\d{4}
    2

    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    55
    Any other string would not match the pattern.
    \d\d\d-\d\d\d-\d\d\d\d
    7
    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    76____293
    \d{3}-\d{3}-\d{4}
    2

    \d{3}-\d{3}-\d{4}
    8
    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    96

    ĐẦU RA

    if re.search[r"ID:{}".format[id], serial]
        print["ID match found"]
    else:
        print["ID match not found"]
    
    #output
    "ID match found"
    
    #For both ID and PR I've tried
    if re.search[r"ID:{}".format[id]."PR:{}".format[pr], serial]
        print["PR match found"]
    else:
        print["PR match not found"]
    
    #output
    "SyntaxError: invalid syntax" 
    
    7

    Cái [wo]? . Regex sẽ khớp với văn bản không có phiên bản nào hoặc có một phiên bản wo trong đó. Đây là lý do tại sao regex khớp với cả 'Batwoman' và 'Batman'.
    Bạn có thể nghĩ về dấu ? . ”
    Nếu bạn cần khớp một ký tự dấu cộng thực tế, hãy thêm dấu gạch chéo ngược vào trước dấu cộng để thoát ký tự đó. \+.

Chủ Đề