![](/img/trans.png)
[英]How to use regex in java to change prefix and suffix of matching substrings
[英]Regex matching only prefix or only suffix (XOR)
我有一個模式,我將其稱為Z
(實際模式有點長,對問題不重要)。 簡單地說,我希望能夠匹配\\*\\sZ
或Z\\:
\\*\\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.