2014-01-12 136 views
0

有沒有辦法使2正則表達式產生正則表達式?正則表達式,「兩個正則表達式的總和」

我的意思是,我有一個正則表達式

(\bword\b) 

(!\\(\w*)(\[.*\])*(\{(\w|\s|\\|\.|\{.\}|`|\-|\:|/|')*\bword\b(\w|\s|\\|\.|\{.\}|`|\-|\:|/|')*\})+) 

有沒有一種方法來匹配第一個正則表達式加上第二正則表達式?這意味着,所有「」字裏面沒有「\ something {字母字母字母}}」?

+0

取決於你的正則表達式工具包,但兩種常規語言的交集是一種常規語言,所以更好的可以做到這一點。 –

+0

我正在使用java。我應該將它添加到標籤嗎? – user1722791

+0

如何匹配第二個正則表達式*不匹配第一個正則表達式?你能想出一個不同的例子,交叉點不是微不足道的嗎? – tripleee

回答

0

我不知道你的意圖,並沒有時間去分析你的表情,但look-ahead可能是你

(?=\bword\b)(!\\(\w*)(\[.*\])*(\{(\w|\s|\\|\.|\{.\}|`|\-|\:|/|')*\bword\b(\w|\s|\\|\.|\{.\}|`|\-|\:|/|')*\})+) 
+0

根本不起作用... – user1722791

0

捕捉所有word\something{letters letters word letters letters}之外的答案:

(\bword\b)|(?:\\(?:\w*)(?:\[.*\])*(?:\{(?:\w|\s|\\|\.|\{.\}|`|\-|\:|\/|')*\bword\b(?:\w|\s|\\|\.|\{.\}|`|\-|\:|\/|')*\})+) 

Demo @ regex101

我使用OR並結合兩者的表達使第二個表達式中的每個捕獲組都成爲非捕獲組,因此只能在構造外捕獲word

+0

「|」是「還是」?因爲當我在另一個正則表達式編輯器中嘗試時,它會在\ something {} – user1722791

+0

'''means'或''內部和外部使用兩個單詞,是的。你已經在第二個正則表達式中過度使用它了。請注意,我用非捕獲組('(?:)')替換了第二個expresison中的每個捕獲組('()')。這樣你只能在構造外部捕獲「單詞」,但仍然匹配我認爲的全部字符串(匹配和捕獲之間有區別)。 –

0

根據你的描述:所有「字」話是不是裏面的「\東西{字母字母字母字母}」,我覺得應該是這麼簡單:

\bword\b(?!.*}) 

該解決方案假定括號{}是平衡的。

相關問題