检索Python中括号中的第一个单词

2024-06-10 11:22:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我在谷歌上搜索并阅读了一些代码Regular expression to return text between parenthesis

但是假设我有下面的字符串

“[指南]建议战士使用力量(STR)(战士->狂暴)”

如何只输出“STR”而不输出(勇士->狂暴)?在

谢谢!在


Tags: to字符串代码textreturn指南between建议
3条回答

使用re.search和@kingram解释的group,或者使用re.findall,然后选择第一个元素。在

s = "[Guide] Strength (STR  are long) is recommended on Warriors (Warriors -> Berserker)"
re.findall('\(([^\)]+)\)', s) # returns all matches

>>> ['STR  are long', 'Warriors -> Berserker']

re.findall('\(([^\)]+)\)', s)[0] # returns the first match which is what you want.

>>> 'STR  are long'

注意:

如果字符串s中没有匹配项,re.findall将返回一个空的列表,而re.search将返回一个None对象。在

>>> import re
>>> s = "[Guide] Strength (STR) is recommended on Warriors (Warriors -> Berserker)"
>>> re.search(r'\(([^)]+)\)', s).group(1)
<<< 'STR'

re.search返回第一个匹配项
.group(1)返回第一个捕获组的内容,即([^)]+)

re.split

>>> import re
>>> s="[Guide] Strength (STR) is recommended on Warriors (Warriors -> Berserker)"
>>> result = re.split(r"\s+(?=[^()]*(?:\(|$))", s)
>>> next((i[1:-1] for i in result if i[0]=='(' and i[-1]==')'),'No sub-strings that are surrounded by parenthesis')
'STR'
>>> 

注意:在这里,如果字符串不包含任何用括号括起来的子字符串,它将输出'No sub-strings that are surrounded by parenthesis',如果不需要,您可以这样做:

^{pr2}$

或者:

>>> [i[1:-1] for i in result if i[0]=='(' and i[-1]==')'][0]

相关问题 更多 >