2 回答

TA貢獻1825條經(jīng)驗 獲得超4個贊
要在第一次出現(xiàn)空白字符之前提取任何內(nèi)容,然后是圓括號(
,您可以使用re.search
(此方法僅用于提取第一個匹配項):
re.search(r'^(.*?)\s\(', text, re.S).group(1) re.search(r'^\S*(?:\s(?!\()\S*)*', text).group()
請參閱regex #1 demo和regex #2 demos。請注意,第二個雖然更長,但效率更高,因為它遵循展開循環(huán)原則。
細節(jié)
^
- 字符串的開始(.*?)
- 第 1 組:盡可能少的任何 0+ 個字符,\s\(
- 一個空格和(
字符。
或更好:
^\S*
- 字符串開頭,然后是 0+ 個非空白字符(?:\s(?!\()\S*)*
- 0 次或多次出現(xiàn)\s(?!\()
- 后面沒有跟的空白字符(
\S*
- 0+ 非空白字符
請參閱Python 演示:
import re
strs = ['Isla Vista (University of California, Santa Barbara)[2]','Carrollton (University of West Georgia)[2]','Dahlonega (North Georgia College & State University)[2]']
rx = re.compile(r'^\S*(?:\s(?!\()\S*)*', re.S)
for s in strs:
m = rx.search(s)
if m:
print('{} => {}'.format(s, m.group()))
else:
print("{}: No match!".format(s))
添加回答
舉報