除了\(\ d \)之外的所有内容

时间:2013-02-07 17:43:03

标签: javascript regex

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)

之外的所有内容

3 个答案:

答案 0 :(得分:3)

如果您没有询问关于正则表达式的理论问题,那么您应该始终指定一个实现(PHP,Javascript,.NET等),这可能属于cs.stackexchange.com。

尽管如此,如果您只想要\(\d+\)之前的字符串,那么:

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

如果你想要一切,那么如果你有多个带括号的数字就不可能。这可能是有限数,例如 3:

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

除非您使用的是.NET:

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

之后您可以循环浏览GroupCollection

答案 1 :(得分:1)

如果您的意思是从每行的开头到每行的末尾"(10)"匹配,并假设您使用的是lookaheads的工具,则可以使用像这样的东西:

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

它将匹配所有内容,直到以下字符"(10)"(但不包括"(10)")或到达行尾。在这种情况下使用非贪婪量词(.*?)很重要,否则正则表达式每次都会匹配整行。

如果您想要匹配除"(10)"之外的整个文档,那么您可以轻松使用任何类型的字符串替换功能,将"(10)"替换为""

答案 2 :(得分:1)

match()某些的正则表达式会非常复杂。相反,只需删除您不想要的部分:

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