2017-02-03 111 views
1

我想使用圓括號來使用邏輯運算符,但是沒有進行匹配組。如何在不製作組的情況下使用圓括號?

我將用一個例子說明:

/(synn|pack)\sRim.*?vert(\s\d*cm|\d*cm)/ 

第一組是(synn|pack)。我怎樣才能使它OR沒有成爲一個組,所以比在這個正則表達式我只有一個組(\s\d*cm|\d*cm)

回答

2

您應該使用一個非捕獲組。如果組的開頭部分後面的第一個字符是?:,那麼該組不會被捕獲。所以在這個例子中,你可以用(?:synn|pack)代替(synn|pack)組。

下面是與Python的圖示(在.groups屬性計算正則表達式多少組有):

>>> import re 
>>> re.compile(r'(synn|pack)\sRim.*?vert(\s\d*cm|\d*cm)').groups 
2 
>>> re.compile(r'(?:synn|pack)\sRim.*?vert(\s\d*cm|\d*cm)').groups 
1 

詳情請參閱this Stack Overflow question

+0

謝謝你的回答! – Src

+0

可以請你告訴我如何在「OR」成爲第一組之後讓每個組成員。 '?(?: - (\ d *)| \ s(\ d *)|(\ d *))cm'' - 這裏我有3組 – Src

+0

@Src:什麼是正則表達式?你所要求的在某些語言中是不可能的。 (順便說一句,上面的例子可以寫成'[ - \ s]?(\ d *)') –

相關問題