2013-02-07 47 views
0
fadjfl (10) fdaf 
fadjfl dafhaj (10) 
fadjfl dafhaj 34 (10) 
fadjfl dafhaj 34 dafads  (10) 
fadjfl dafhaj 34 dafa(ds) (( (10) 
fadjfl 
fadjfl dafhaj 
fadjfl dafhaj 34 
fadjfl dafhaj 34 dafads  
fadjfl dafhaj 34 dafa(ds) ((

我需要的正則表達式,將選擇一切,但(10)比賽的一切,但( d )

+1

你用什麼工具? (在這種情況下,它尤其重要) – JDB

+0

我需要它在javascript – user1750290

回答

3

如果您沒有提出有關正則表達式的理論問題,那麼您應該始終指定一個實現(PHP,Javascript,.NET等),無論如何,這些問題可能屬於cs.stackexchange.com。

爲了雖然開始你了,如果你只希望\(\d+\)前的字符串,然後:

(.*?)(?:\(\d+\)|$) 

如果你想要的一切,那麼這是不是真的有可能,如果你可以有多個括號中的數字。有可能是有限的數字,例如,例如 3:

(.*?)(?:\(\d+\)|$)(.*?)(?:\(\d+\)|$)(.*?)(?:\(\d+\)|$) 

除非你使用.NET:

((.*?)(?:\(\d+\)|$))* 

,您可以循環的 GroupCollection

+0

+1一種通用方法,可用於大多數引擎,儘管它需要額外的代碼來提取匹配。 – JDB

1

如果你的意思是你想從每個排隊的開頭匹配,直到"(10)"在然後結束每一行,並假設你正在使用能夠lookaheads一個工具,你可以使用這樣的事情:

.*?(?=\(10\)|$) 

它會匹配一切直到以下字符"(10)"(但不會t包括"(10)")或到達行末。在這種情況下使用非貪婪量詞(.*?)非常重要,否則正則表達式將每次匹配整行。

如果你的意思是你想除了"(10)"那麼你可以很容易地使用任何類型的字符串替換功能,與""更換"(10)"整個文檔匹配。

+0

嘗試過這個但它不適用於例如fasjfl和以下 – user1750290

+0

@ user1750290 - 更新 – JDB

1

match()東西不是將是非常comlicated。相反,只是刪除你不想要的部分:

myStr.replace(/\(\d+\)/, "") 
myStr.split(/\(\d+\)/)