Регулярное выражение для строк с подчеркиванием - PullRequest
0 голосов
/ 03 марта 2020

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

types == "EQUAL_NUM_SEQUENTIAL_LBAS":

, для этого я использую следующий код

variable = 'types'
for i in data:
    if re.search(re.escape(variable) + r"\s\=\=\s^[A-Z_]+$", i):
        print "yyy"
        break

, где данные здесь - список строк в разобранном файле. Что не так в написанном мною выражении?

Ответы [ 2 ]

0 голосов
/ 03 марта 2020

Удалить символ ^ в шаблоне

 r"\s\s\=\=\s[A-Z_]+$"
0 голосов
/ 03 марта 2020

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

^[A-Z]+(?:_[A-Z]+)*$

Пример сценария:

inp = "EQUAL_NUM_SEQUENTIAL_LBAS"
if re.search(r'^[A-Z]+(?:_[A-Z]+)*$', inp):
    print "MATCH"

Шаблон регулярного выражения, считайте громко и по порядку говорит, что соответствует какому-либо заглавному букву только слову, за которым необязательно следует подчеркивание и другое слово, ноль или более раз.

Чтобы зафиксировать такие слова, встречающиеся в любом месте более крупного текста / документа, используйте:

inp = "Here is one ABC_DEF word and another EQUAL_NUM_SEQUENTIAL_LBAS here"
words = re.findall(r'\b[A-Z]+(?:_[A-Z]+)*\b', inp)
print(words)

Печать:

['EQUAL_NUM_SEQUENTIAL', 'LBAS']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...