2012-02-14 166 views
-2

我需要一个正则表达式来选择右括号之间的所有文本。在左括号之间查找文本

实施例:

xxxxxxx (Regular Expression) xxxxxxx(One) xxxxxxx(One Word) xxxxxxx (Two Word) 
1) xxxxxxx(lowercase) 
2) xxxxxxx(UPPERCASE) 

结果应该是:

  1. 匹配1:XXXXXXX(正则表达式)
  2. 匹配2:XXXXXXX(一)
  3. 匹配3:xxxxxxx(一个字)
  4. 第4:XXXXXXX(两条字)
  5. 第5:XXXXXXX(小写)
  6. 第6:XXXXXXX(大写)

备注: XXXXXXX是任何人物造型

谢谢。

回答

1

一个可以帮助的python代码。

>>> import re 
>>> s = """xxxxxxx (Regular Expression) xxxxxxx(One) xxxxxxx(One Word) xxxxxxx (Two Word) 
... 1) xxxxxxx(lowercase) 
... 2) xxxxxxx(UPPERCASE)""" 
>>> re.findall("([A-Za-z]+ {0,1}\(.*?\))", s, re.MULTILINE) 
['xxxxxxx (Regular Expression)', 'xxxxxxx(One)', 'xxxxxxx(One Word)', 'xxxxxxx (Two Word)', 'xxxxxxx(lowercase)', 'xxxxxxx(UPPERCASE)'] 
>>> 

"([A-Za-z]+ {0,1}\(.*?\))"是正在使用的正则表达式。

  • [A-Za-z]+指AZ或az任何字符中的一个或以上次数
  • `{0,1}是指0或1次数的空间
  • .*指字符,然后零或字符的发生更。
  • ?意味着一种非贪婪的方式。
  • \( & /)被反斜杠,因为我们也想匹配它们。
0

试试这个:

[^\(\)]*\([^\)]*\) 

下面是现场演示:

http://regexr.com?300k2

另外,如果你需要括号之前明确地访问内容,并在括号内的内容,请使用以下正则表达式给名称适当的组:

(?<outpar>[^\(\)]*)\((?<inpar>[^\)]*)\) 

而这同样是它的现场演示:

http://regexr.com?300k5