2012-02-14 163 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