gì ((a*)(b*))*U(a*)
thực sự có nghĩa là (sao chép từ here)
NODE EXPLANATION
--------------------------------------------------------------------------------
( group and capture to \1 (0 or more times
(matching the most amount possible)):
--------------------------------------------------------------------------------
( group and capture to \2:
--------------------------------------------------------------------------------
a* 'a' (0 or more times (matching the
most amount possible))
--------------------------------------------------------------------------------
) end of \2
--------------------------------------------------------------------------------
( group and capture to \3:
--------------------------------------------------------------------------------
b* 'b' (0 or more times (matching the
most amount possible))
--------------------------------------------------------------------------------
) end of \3
--------------------------------------------------------------------------------
)* end of \1 (NOTE: because you are using a
quantifier on this capture, only the LAST
repetition of the captured pattern will be
stored in \1)
--------------------------------------------------------------------------------
U 'U'
--------------------------------------------------------------------------------
( group and capture to \4:
--------------------------------------------------------------------------------
a* 'a' (0 or more times (matching the most
amount possible))
--------------------------------------------------------------------------------
) end of \4
biểu hiện này hiện phù hợp với tất cả các trình tự: abUa bU U aabbUaa aaUaa aaU Uaa bbU ababUaa aabbaabbUaa
(nhìn vào here)
Không có cách nào để đơn giản hóa này, mà không cần loại bỏ chụp nhóm và thứ tự các chữ cái còn lại.
CHỈNH SỬA: Nếu U
trong câu lệnh regex của bạn là viết tắt của "union", thì biểu thức này không hợp lệ. Không có cách nào để kết hợp bất cứ điều gì trong regex. Chỉ có OR
và bạn cần sử dụng |
(đường ống) cho điều đó. Nếu bạn muốn kết hợp ((a*)(b*))*
và (a*)
thì có thể nó sẽ là ((a*)(b*))*
, nhưng vẫn khớp với bất kỳ thứ gì như abaab
.
Tuy nhiên, việc chụp các nhóm trong câu lệnh regex của bạn là vô ích, vì vậy, chẳng hạn như [ab]*
đủ để khớp với bất kỳ số nào của a
và b
.
Không 'U' đứng cho công đoàn? Tức là, với '(a U b) *' bạn có thực sự ngụ ý những gì sẽ được biểu diễn trong regex là '(a | b) *' hay '[ab] *'? Nguyên nhân nếu mô hình đó bạn có vẻ như chỉ bằng '(a | b) *' như bạn đã gợi ý. –
Nếu 'U' được cho là có nghĩa là" công đoàn ", thì sẽ thích hợp khi sử dụng biểu tượng thích hợp (' ∪') - hoặc ít nhất là viết hoa trong văn bản. – Tomalak
Đã chỉnh sửa văn bản ngay bây giờ :) – user2795095