[ Better ] Regex Pattern Conversion và 10 regex cơ bản

Avatar admin | June 28, 2024

Regex Pattern Conversion và 10 regex cơ bản
Regex Pattern Conversion và 10 regex cơ bản

Bạn có thể sử dụng biểu thức chính quy sau để chuyển đổi đoạn văn bản như yêu cầu:

Pattern regex: (<li>)([^<]*:)(.*?)(<\/li>)

Replacement: \1<b>\2<\/b>\3\4

Giải thích:

  • (<li>): Capture group cho thẻ mở <li>.
  • ([^<]*:): Capture group cho nội dung trước dấu hai chấm.
  • (.*?): Capture group cho phần nội dung còn lại của mỗi mục.
  • (<\/li>): Capture group cho thẻ đóng </li>.

Thay thế:

  • \1: Giữ nguyên thẻ mở <li>.
  • <b>\2<\/b>: Đưa nội dung của capture group thứ hai ([^<]*:) vào thẻ <b>.
  • \3: Giữ nguyên nội dung capture group thứ ba (phần nội dung).
  • \4: Giữ nguyên thẻ đóng </li>.

Đoạn regex này sẽ giúp bạn bao bọc phần nội dung trước dấu hai chấm trong thẻ <b> mỗi khi tìm thấy các mục trong danh sách, giữ nguyên cấu trúc và bổ sung thẻ <b> cho phần nội dung cần đánh dấu đậm.

Đương nhiên! Đây là một ví dụ Python về cách sử dụng regex để thực hiện chuyển đổi như yêu cầu của bạn:

import re

def boldify_list_items(input_text):
    pattern = r'(<li>)([^<]*:)(.*?)(<\/li>)'
    replacement = r'\1<b>\2<\/b>\3\4'
    output_text = re.sub(pattern, replacement, input_text)
    return output_text

# Đoạn văn bản ban đầu
input_text = """
<ul>
<li>Cấu trúc thư mục: Chúng ta có hai module chính users và posts, mỗi module chứa các thành phần riêng như models, routes, forms và templates.</li>
<li>app.py: Đây là nơi chúng ta tạo ứng dụng Flask và đăng ký các blueprint.</li>
<li>config.py: Chứa cấu hình ứng dụng.</li>
<li>run.py: Điểm khởi động của ứng dụng.</li>
<li>Models: Định nghĩa các mô hình cơ sở dữ liệu cho người dùng và bài viết.</li>
<li>Routes: Định nghĩa các đường dẫn (routes) cho các module người dùng và bài viết.</li>
<li>Templates: Chứa các file HTML được sử dụng để render các trang web.</li>
</ul>
"""

# Áp dụng hàm để chuyển đổi
output_text = boldify_list_items(input_text)

# In kết quả
print(output_text)

Kết quả in ra sẽ là đoạn văn bản đã được chuyển đổi với các mục danh sách được bao bọc trong thẻ <b> như yêu cầu.

Nếu bạn chạy đoạn mã này, bạn sẽ nhận được đoạn văn bản sau khi đã chuyển đổi:

<ul>
<li><b>Cấu trúc thư mục:</b> Chúng ta có hai module chính users và posts, mỗi module chứa các thành phần riêng như models, routes, forms và templates.</li>
<li><b>app.py:</b> Đây là nơi chúng ta tạo ứng dụng Flask và đăng ký các blueprint.</li>
<li><b>config.py:</b> Chứa cấu hình ứng dụng.</li>
<li><b>run.py:</b> Điểm khởi động của ứng dụng.</li>
<li><b>Models:</b> Định nghĩa các mô hình cơ sở dữ liệu cho người dùng và bài viết.</li>
<li><b>Routes:</b> Định nghĩa các đường dẫn (routes) cho các module người dùng và bài viết.</li>
<li><b>Templates:</b> Chứa các file HTML được sử dụng để render các trang web.</li>
</ul>

Đây là cách sử dụng regex trong Python để thực hiện chuyển đổi như yêu cầu của bạn.

Chắc chắn rồi! Dưới đây là 10 biểu thức chính quy (regex) cơ bản, cách dùng, và cách kết hợp chúng để giải quyết các nhiệm vụ phức tạp hơn.

1. Dấu chấm (.)

  • Mô tả: Đại diện cho bất kỳ ký tự đơn nào ngoại trừ ký tự dòng mới.
  • Ví dụ: a.b sẽ khớp với aab, acb, a1b, nhưng không khớp với a\nb.
  • Kết hợp: a.b.c sẽ khớp với a1b2c.

2. Dấu sao (*)

  • Mô tả: Khớp với ký tự trước đó 0 hoặc nhiều lần.
  • Ví dụ: a* sẽ khớp với “, a, aa, aaa,…
  • Kết hợp: a*b sẽ khớp với b, ab, aab, aaab,…

3. Dấu cộng (+)

  • Mô tả: Khớp với ký tự trước đó 1 hoặc nhiều lần.
  • Ví dụ: a+ sẽ khớp với a, aa, aaa,…
  • Kết hợp: a+b sẽ khớp với ab, aab, aaab, nhưng không khớp với b.

4. Dấu hỏi (?)

  • Mô tả: Khớp với ký tự trước đó 0 hoặc 1 lần.
  • Ví dụ: a? sẽ khớp với “, a.
  • Kết hợp: a?b sẽ khớp với b, ab.

5. Dấu ngoặc vuông ([])

  • Mô tả: Khớp với bất kỳ ký tự nào trong tập hợp.
  • Ví dụ: [abc] sẽ khớp với a, b, c.
  • Kết hợp: [a-c] sẽ khớp với a, b, c.

6. Dấu ngoặc nhọn ({})

  • Mô tả: Khớp với số lần xuất hiện cụ thể của ký tự trước đó.
  • Ví dụ: a{2} sẽ khớp với aa.
  • Kết hợp: a{2,4} sẽ khớp với aa, aaa, aaaa.

7. Dấu gạch ngang (-)

  • Mô tả: Được dùng trong dấu ngoặc vuông để xác định khoảng ký tự.
  • Ví dụ: [a-z] sẽ khớp với bất kỳ chữ cái thường từ a đến z.
  • Kết hợp: [A-Za-z0-9] sẽ khớp với bất kỳ chữ cái thường, chữ cái hoa, hoặc chữ số.

8. Dấu mũ (^)

  • Mô tả: Khớp với vị trí bắt đầu của chuỗi hoặc phủ định tập hợp ký tự.
  • Ví dụ: ^a sẽ khớp nếu a là ký tự đầu tiên của chuỗi.
  • Kết hợp: [^0-9] sẽ khớp với bất kỳ ký tự nào không phải là chữ số.

9. Dấu đô la ($)

  • Mô tả: Khớp với vị trí kết thúc của chuỗi.
  • Ví dụ: a$ sẽ khớp nếu a là ký tự cuối cùng của chuỗi.
  • Kết hợp: a.$ sẽ khớp với chuỗi có a là ký tự đầu và bất kỳ ký tự nào khác làm ký tự cuối.

10. Dấu ngoặc đơn (())

  • Mô tả: Được sử dụng để tạo nhóm và xác định thứ tự ưu tiên.
  • Ví dụ: (abc) sẽ khớp với abc.
  • Kết hợp: (a|b)c sẽ khớp với ac hoặc bc.

Cách kết hợp các regex cơ bản:

  1. Email Validation:

    <pre>^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ </pre>
    • Khớp với các địa chỉ email hợp lệ.
  2. Khớp với các địa chỉ email hợp lệ.
  3. Phone Number:

    <pre>^\+?[0-9]{1,4}?[-. ]?(\(?\d{1,3}?\)?[-. ]?)?\d{1,4}[-. ]?\d{1,4}[-. ]?\d{1,9}$ </pre>
    • Khớp với các số điện thoại theo nhiều định dạng khác nhau.
  4. Khớp với các số điện thoại theo nhiều định dạng khác nhau.
  5. Date (YYYY-MM-DD):

    <pre>^\d{4}-\d{2}-\d{2}$ </pre>
    • Khớp với các ngày theo định dạng YYYY-MM-DD.
  6. Khớp với các ngày theo định dạng YYYY-MM-DD.
  7. IP Address:

    <pre>^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$ </pre>
    • Khớp với địa chỉ IP.
  8. Khớp với địa chỉ IP.
  9. Hex Color Code:

    <pre>^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$ </pre>
    • Khớp với mã màu hex.
  10. Khớp với mã màu hex.

Email Validation:

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
  • Khớp với các địa chỉ email hợp lệ.

Phone Number:

^\+?[0-9]{1,4}?[-. ]?(\(?\d{1,3}?\)?[-. ]?)?\d{1,4}[-. ]?\d{1,4}[-. ]?\d{1,9}$
  • Khớp với các số điện thoại theo nhiều định dạng khác nhau.

Date (YYYY-MM-DD):

^\d{4}-\d{2}-\d{2}$
  • Khớp với các ngày theo định dạng YYYY-MM-DD.

IP Address:

^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$
  • Khớp với địa chỉ IP.

Hex Color Code:

^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$
  • Khớp với mã màu hex.

Hi vọng các ví dụ trên sẽ giúp bạn hiểu rõ hơn về các biểu thức chính quy cơ bản và cách kết hợp chúng!

Regex Pattern Conversion và 10 regex cơ bản
Regex Pattern Conversion và 10 regex cơ bản

Bên trên là áp dụng regex format các tag HTML ra formater

Pattern tiếng việt

Regex Pattern Conversion và 10 regex cơ bản
Regex Pattern Conversion và 10 regex cơ bản

Pattern tìm các thẻ nội dung trong thẻ li và highline nó lên

Regex Pattern Conversion và 10 regex cơ bản
Regex Pattern Conversion và 10 regex cơ bản
Regex Pattern Conversion và 10 regex cơ bản
Regex Pattern Conversion và 10 regex cơ bản tạo hàm và dùng regex

Bên dưới là kết quả được tạo ra các thẻ li sẽ được highlight vừa tốt cho hiệu suất vừa đơn giản

li sẽ được highlight

#Mtips5s #Contact

Fanpage: https://www.facebook.com/mtipscoder

Group trao đổi, chia sẻ: https://www.facebook.com/groups/mtipscoder

Website: https://mtips5s.com

Youtube: https://mtips5s.com

Twitter(X): @takagiks99

Instagram: @khuongkara

Threads: @khuongkara

Google Maps: @khuongkara

#Base Code #Souce Code

Bộ công cụ My Self: @tools.mtips5s.com

Github: @github

Npm: @npm

Docker: @docker

Chúc các bạn thành công!


Written by admin


Comments

This post currently has no responses.

Leave a Reply