Как извлечь следующее слово, когда предложение найдено в строке python - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь найти эффективный способ поиска предложения в строке, если оно найдено, а затем извлечь следующее слово, например, -

string_text = """"
 create table AWSBilling202004(identity_LineItemId VARCHAR(512), identity_TimeInterval VARCHAR(512),
 create table AWSBilling202004_tagMapping (remappedUserTag VARCHAR(512), userTag VARCHAR(512));
 insert into AWSBilling202004_tagMapping(remappedUserTag, userTag) values('userTag4', 'user:BillingTeam'
 create table AWSBilling202004_costCategoryMapping (remappedCostCategory VARCHAR(512), costCategory VARCHAR(512));
 """"

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

AWSBilling202004
AWSBilling202004_tagMapping
AWSBilling202004_costCategoryMapping

Как вы видите выше, когда ( слово найдено, извлекается до этой точки.

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

1 Ответ

2 голосов
/ 10 апреля 2020

Это сработало для меня

import re
def get_next_words(text, pattern):
    return re.findall("%s\s+([a-zA-Z0-9_]+)"%(pattern), text)


string_text = '''
 create table AWSBilling202004(identity_LineItemId VARCHAR(512), identity_TimeInterval VARCHAR(512),
 create table AWSBilling202004_tagMapping (remappedUserTag VARCHAR(512), userTag VARCHAR(512));
 insert into AWSBilling202004_tagMapping(remappedUserTag, userTag) values('userTag4', 'user:BillingTeam'
 create table AWSBilling202004_costCategoryMapping (remappedCostCategory VARCHAR(512), costCategory VARCHAR(512));
'''


print(get_next_words(string_text, "create table"))
...