1
我想使用圓括號來使用邏輯運算符,但是沒有進行匹配組。如何在不製作組的情況下使用圓括號?
我將用一個例子說明:
/(synn|pack)\sRim.*?vert(\s\d*cm|\d*cm)/
第一組是(synn|pack)
。我怎樣才能使它OR
沒有成爲一個組,所以比在這個正則表達式我只有一個組(\s\d*cm|\d*cm)
?
我想使用圓括號來使用邏輯運算符,但是沒有進行匹配組。如何在不製作組的情況下使用圓括號?
我將用一個例子說明:
/(synn|pack)\sRim.*?vert(\s\d*cm|\d*cm)/
第一組是(synn|pack)
。我怎樣才能使它OR
沒有成爲一個組,所以比在這個正則表達式我只有一個組(\s\d*cm|\d*cm)
?
您應該使用一個非捕獲組。如果組的開頭部分後面的第一個字符是?:
,那麼該組不會被捕獲。所以在這個例子中,你可以用(?: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
謝謝你的回答! – Src
可以請你告訴我如何在「OR」成爲第一組之後讓每個組成員。 '?(?: - (\ d *)| \ s(\ d *)|(\ d *))cm'' - 這裏我有3組 – Src
@Src:什麼是正則表達式?你所要求的在某些語言中是不可能的。 (順便說一句,上面的例子可以寫成'[ - \ s]?(\ d *)') –