如何在'('和下一个空白之间的语句中获取特定单词

时间:2018-12-19 18:20:58

标签: python regex

所以我有一堆具有基本设置TeamName (GMName - Tier)的字符串,我试图找到一种从该字符串获取GMName的好方法。

我尝试使用此正则表达式: \(\w*\s 但这给了我(GMName,然后我将不得不以某种方式解析它以仅获取GMName。是否可以在一行中使用正则表达式或某些Python函数来获取所需的内容?

2 个答案:

答案 0 :(得分:2)

如果只希望它检查周围的字符串而不被捕获到匹配文本中,则需要使用环顾四周。您这个正则表达式,

(?<=\()\w*\b

在这里,(?<=\()确保单词前面有文字(\b确保它是单词边界。

Demo

示例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"