Giả sử tôi muốn khớp:
TIỀN TỐthứ gì đó
hoặc:
thứ gì đóBÀI VIẾT
Nhưng chắc chắnKHÔNG:
TIỀN TỐthứ gì đóBÀI VIẾT
其中 thứ gì đó Đó là một loại chế độ chia sẻ và PREFIX/POSTFIX thực sự là một số chế độ khác nhau.
Tôi có thể (hoặc nghĩ) giải quyết vấn đề này bằng Python. Tuy nhiên, cấu trúc này hoạt động với "PREFIXabc" nhưng không hoạt động với "abcPOSTFIX". Làm thế nào để giải quyết nó?
import re
prefix_pattern = "PREFIX"
postfix_pattern = "POSTFIX"
Shared_pattern = "[a-zA-z]*"
test_pattern ="("+prefix_pattern+shared_pattern+")|("+shared_pattern+postfix_pattern+")$"
mẫu = re.compile(test_pattern)
#test = 'PREFIXabc' # Trùng khớp
test = 'abcPOSTFIX' # Không khớp
x = re.match(mẫu,kiểm tra)
nếu x:
print(x.group())
khác:
in ("Không tìm thấy")
Xin lưu ý rằng khi kết hợp với kết hợp lại
Khi được sử dụng cùng nhau, mẫu của bạn sẽ giống như ^(alternative1)|^(alternative2)$
kế hoạch. Điều này có nghĩa là dây neo $
Cái kết sẽ chỉ ảnh hưởng đến lựa chọn thứ hai nếu kiểm tra = 'PREFIXabc123'
, TIỀN TỐabc
sẽ được kết hợp .
Tùy thuộc vào yêu cầu của bạn, có hai cách để thực hiện.
Hoặc bạn cần phải xóa $
, và sau đó bạn cũng khớp kiểm tra = 'abcPOSTIFX123'
TRONG abcPOSTFIX
, hoặc nhóm hai lựa chọn thay thế:
test_pattern=r"(?:{0}{1}|{1}{2})$".format(prefix_pattern, Shared_pattern, postfix_pattern)
Sau đó, sẽ không tìm thấy kết quả phù hợp một phần nào nữa.
Cho tôi biết: Nếu tiền tố_pattern
,mẫu_chia sẻ
Và postfix_pattern
là một chuỗi ký tự, xin đừng quên sử dụng tái.thoát( )
.
Tôi là một lập trình viên xuất sắc, rất giỏi!