[ Better ] 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:
Table of Contents
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ớiaab
,acb
,a1b
, nhưng không khớp vớia\nb
. - Kết hợp:
a.b.c
sẽ khớp vớia1b2c
.
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ớib
,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ớia
,aa
,aaa
,… - Kết hợp:
a+b
sẽ khớp vớiab
,aab
,aaab
, nhưng không khớp vớib
.
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ớib
,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ớia
,b
,c
. - Kết hợp:
[a-c]
sẽ khớp vớia
,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ớiaa
. - Kết hợp:
a{2,4}
sẽ khớp vớiaa
,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
đếnz
. - 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ếua
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ếua
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ớiabc
. - Kết hợp:
(a|b)c
sẽ khớp vớiac
hoặcbc
.
Cách kết hợp các regex cơ bản:
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ệ.
- Khớp với các địa chỉ email hợp lệ.
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.
- Khớp với các số điện thoại theo nhiều định dạng khác nhau.
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
.
- Khớp với các ngày theo định dạng
- Khớp với các ngày theo định dạng
YYYY-MM-DD
. IP Address:
<pre>^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$ </pre>- Khớp với địa chỉ IP.
- Khớp với địa chỉ IP.
Hex Color Code:
<pre>^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$ </pre>- Khớp với mã màu hex.
- 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!
Bên trên là áp dụng regex format các tag HTML ra formater
Pattern tiếng việt
Pattern tìm các thẻ nội dung trong thẻ li và highline nó lên
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
#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.