所以我有一堆具有基本设置TeamName (GMName - Tier)
的字符串,我试图找到一种从该字符串获取GMName的好方法。
我尝试使用此正则表达式:
\(\w*\s
但这给了我(GMName
,然后我将不得不以某种方式解析它以仅获取GMName。是否可以在一行中使用正则表达式或某些Python函数来获取所需的内容?
答案 0 :(得分:2)
如果只希望它检查周围的字符串而不被捕获到匹配文本中,则需要使用环顾四周。您这个正则表达式,
(?<=\()\w*\b
在这里,(?<=\()
确保单词前面有文字(
,\b
确保它是单词边界。
示例python代码,
import re
s = 'TeamName (GMName - Tier)'
arr = re.findall(r'(?<=\()\w*\b', s)
print(arr)
打印
['GMName']
答案 1 :(得分:1)
您可以在后方括号中使用后向标记,也可以使用捕获组。
躲在后面
>>> pat = re.compile(r"""
... (?<=\() # asserts that a literal ( precedes the following:
... \S+ # one or more non-spaces
... """, re.X)
>>> pat.search("TeamName (GMName - Tier)").group()
"GMName"
捕获组
>>> pat = re.compile(r"""
... \( # a literal (
... (\S+) # capture one or more non-space characters
... """, re.X)
>>> pat.search("TeamName (GMName - Tier)").group(1)
"GMName"