Как получить конкретное слово в выражении между '(' и следующим пробелом - PullRequest
0 голосов
/ 19 декабря 2018

Итак, у меня есть куча строк с этой базовой настройкой TeamName (GMName - Tier) Я пытаюсь найти хороший способ получить GMName из этой строки.

Я пытался использовать это регулярное выражение: \(\w*\sно это дает мне (GMName, который мне потом придется каким-то образом анализировать, чтобы получить только GMName.Есть ли регулярное выражение или какая-то функция Python, которую я могу использовать в одной строке, чтобы получить то, что я хочу?

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Вам нужно использовать осмотры, если вы просто хотите, чтобы он проверял окружающие строки без их попадания в текст совпадения.Вы это регулярное выражение,

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

Здесь (?<=\() гарантирует, что слову предшествует литерал (, а \b гарантирует, что это граница слова.

Демо

Пример кода Python,

import re
s = 'TeamName (GMName - Tier)'
arr = re.findall(r'(?<=\()\w*\b', s)
print(arr)

Отпечатки,

['GMName']
0 голосов
/ 19 декабря 2018

Вы можете использовать вид сзади для открытой пары или использовать группу захвата.

Взгляд назад

>>> 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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...