簡體   English   中英

正則表達式只匹配前綴或僅后綴(XOR)

[英]Regex matching only prefix or only suffix (XOR)

我有一個模式,我將其稱為Z (實際模式有點長,對問題不重要)。 簡單地說,我希望能夠匹配\\*\\sZZ\\: \\*\\sZ但不能同時匹配或不匹配。

我嘗試使用前瞻(類似於下面),但是由於前綴和后綴之間的模式,它們不起作用。

(\*\s(?!\:))Z((?<!\*)\:)

有沒有辦法完成這個而不必復制模式(例如(\\*\\sZ|Z\\:) )?

關於我的模式的快速說明是Z模式中沒有\\* ,僅在前綴中。 相反,也沒有\\:在Z模式中,如果立即進行 Z,則僅在后綴中,而不是在任何其他字符之后(在后綴之后有.*捕獲)

有沒有辦法完成這個而不必復制模式?

答案是不”。 不同於and / or正則表達式的基本屬性。 在正則表達式中,您可以使用|來使用concatenation和構造or表達式輕松構造and表達 分別。

但無論如何,如果你仍然希望完成你的工作,我建議你這樣做。

首先,你已經有了兩種模式

\*\sZ

Z\:

所以,正如你所說,這兩種模式不可能同時發生。

所以從xor屬性:

A xor B =(A&~B)|(~A&B)。

最后,我們可以得到

\*\sZ(?!\:)|(?<!\*\s)Z\:

看一個DEMO

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM