正则表达式求一个元素不在括号内

例如字符串"(where)where(where)" 我想获得中间的元素正则改怎么写,谢谢!
是我没讲清楚,主要的目的是在字符串中查找不包含于括号的关键字如where,
像这样的(aaaa where xxxx)就不会满足条件,
而(aaa where bbbb) aaa where xxx中的第二的where就会满足条件,

Match match = Regex.Match("((aaa where bbb) aaa where xxxx) where", "待求表达式");
if (match.Success)
{
Response.Write(match.Index);//输出最后一个where的index
}
能满足上式基本上就差不多了。

第1个回答  2010-05-11
\\(\\w+\\)(\\w+)?\\(\\w+\\)
这样匹配的是两组括号中间的

public static void main(String[] _s) {
String s= "(whexe)where(wheye)" ;
Pattern p = Pattern.compile("\\(\\w+\\)(\\w+)?\\(\\w+\\)");
Matcher m = p.matcher(s);
if(m.matches()){
System.out.println(m.group(1));
}
}
java代码
输出where
特别把前后括号里面的字母改了改
第2个回答  2010-05-17
终于解决了,用平衡分组能解决,谢谢各位了。
Match match = Regex.Match("((aaa where bbb) aaa where xxxx) where asda", @"((?<open>\()|(?<-open>\))|[^()])*(?<tt>where)(?(open)(?!))");
if (match.Success)
{
Response.Write(match.Groups["tt"].Index);
}本回答被提问者采纳
第3个回答  2010-05-12
(?:\(.*where.*\)).*(where).*

括号里面的 where 也匹配,只是忽略。
取第一个匹配项。
第4个回答  2010-05-11
中间的where

/(?<\()\s*[a-z]+(?=\s*\()/i
第5个回答  2010-05-14
kk

正则表达式求一个元素不在括号内
public static void main(String[] _s) { String s= "(whexe)where(wheye)" ;Pattern p = Pattern.compile("\\\\(\\\\w+\\\\)(\\\\w+)?\\\\(\\\\w+\\\\)");Matcher m = p.matcher(s);if(m.matches()){ System.out.println(m.group(1));} } java代码 输出where 特别把前后括号里面的字...

python语言 正则表达式 取{}之间的字符,不包括大括号
import re s="{1 2 3 { 4 5 { 6 7 } } } "reg=re.compile(r"\\{[^{}]*\\}")reg.search(s).group(0)print(reg.search(s).group(0))

正则表达式 不包含特定符号的写法
excel里面是不支持正则方式查找替换的,如果用vba,倒是有可能。你能把数据的具体情况说明一下吗?再就是,如果只想找出不带中括号的数据,可以这样试一试,正则表达式为:^[^\\[].+ 意思是数据的开始不是 [ 符号的。注意正则表达式的选项要把 全局 和 多行 加上。比如用js代码为例:var str = ...

js 正则表达式提取字符串中最后一个小括号里面的内容,不包括括号
.*\\(([^)]*)\\)取分组1

python语言 正则表达式 取{}之间的字符,不包括大括号
在 python 中,str.replace 函数接受的第一个参数并不是正则表达式,而是字符串。所以你会看到,运行 print '123(abc)123'.replace('(abc)', '!')的结果是 '123!123'想要达到你所说的效果,可以试一试 python 中的 re 模块 例如:import re replace_reg = re.compile(r'abc$')print replace...

javascript中这个正则表达式为什么写两个中括号?只要一个不就可以...
^[a-zA-Z]意思是必须要以这里面的区间集合作为开头,你看两个中括号的内容是不一样的,只要是避免_0-9这些写在开头。看^这个符号,如果是在中括号外面就是必须要中括号的内容,在中括号里面的话:[^a-zA-Z],就是除了中括号里面的集合,其他都要 ...

求一则正则表达式,主要目的是去除小括号和小括号中的内容
s = 'XXX[1](×1) XXX{3}(×3) XXX[4](×4) XXX{5}(×5)';echo preg_replace("\/\\([^\\)]*\\)\/", '' ,$s);

下面的正则表达式中,为啥 \\1不能替换括号中的内容
你表达式中 \\(.*\\),括号前面都加了\\,也就是对括号进行了转义,所以()在这里不是组,\\1意思是替换组1匹配的内容,所以匹配不到的,如果括号前面的\\也是你要匹配的内容,那么需要在\\前面再加一个\\,对括号前的\\进行转义,此时()的作用才是组;如果\\不是匹配的内容,那么把括号前的\\删除掉即可...

c++中有一个文档需要解析,怎么用正则表达式取出文本里小括号中的字符...
((?<=\\w*\\()\\w+(?=\\)))+ 我用regextester试过,可以取出来的,如果你的字符串中不一定是字母或数字的话,你可以将 \\w 换成 .希望对你有用

SQL专题(二十八)SQL正则表达式
这里,\\( 和 \\) 匹配左括号和右括号,\\(.*?\\) 是一个捕获组,它尽可能少地匹配任何字符,直到遇到右括号结束,整个捕获组匹配括号及其内容。通过这些示例,我们可以看到括号在正则表达式中的不同用途。在实际操作中,需要根据具体需求选择正确的写法。值得注意的是,在使用正则表达式时,通常需要在其...

相似回答