извлекать строки с помощью регулярных выражений python

#python #regex #string

#python #регулярное выражение #строка

Вопрос:

У меня есть текст в файле, который я помещаю в строку.

 txt = "PRIMARY INDEX its_mnth_content_aggr ( AC_ID ,ROW_ADDED_DT ,NOTE_SEQ_NR ,BIZ_UNIT_CD ,
DISPATCH_ID ,CASE_CREATE_DT ) 
ABDCGFWERRUU 
asdffggb 
PRIMARY INDEX its_mnth_content_aggr ( AC_CASE ,ROW_ADDED_DT ,NOTE_SEQ_NR ,BIZ_UNIT_CD ,
DISPATCH_ID ,CASE_CREATE_DT )"
  

Я хочу извлечь из него полный первичный индекс, как в первичном индексе (….)

пока у меня есть ниже

 x3 = re.findall(r"bPRIMARYsINDEXsw W.*", txt)
  

это дает мне

 ['PRIMARY INDEX its_mnth_content_aggr ( AC_CASE_ID ,ROW_ADDED_DT ,NOTE_SEQ_NR ,BIZ_UNIT_CD ,DISPATCH_ID ,CASE_CREATE_DT )  ABDCGFWERRUU  qwerrtyyuiu PRIMARY INDEX its_mnth_content_aggr ( AC_CASE_ID ,ROW_ADDED_DT ,NOTE_SEQ_NR ,BIZ_UNIT_CD ,DISPATCH_ID ,CASE_CREATE_DT )']
  

Я хочу что-то вроде этого

 ['PRIMARY INDEX its_mnth_content_aggr ( AC_CASE_ID ,ROW_ADDED_DT ,NOTE_SEQ_NR ,BIZ_UNIT_CD ,DISPATCH_ID ,CASE_CREATE_DT ) PRIMARY INDEX its_mnth_content_aggr ( AC_CASE_ID ,ROW_ADDED_DT ,NOTE_SEQ_NR ,BIZ_UNIT_CD ,DISPATCH_ID ,CASE_CREATE_DT )'] 
  

может кто-нибудь, пожалуйста, помочь

Комментарии:

1. Кроме того, моя строка включает в себя новые строки между значениями основного индекса

2. r'bPRIMARYs INDEXs w s*([^()]*)' ?

Ответ №1:

В вашем регулярном выражении говорится, что вам нужна строка, начинающаяся с PRIMARY INDEX , за которой следуют любые символы. Таким образом, он соответствует всей вашей строке;


Вы должны быть более конкретными.

 PRIMARY INDEX[A-Za-z(_,n\ ]*)
  
  • строка должна начинаться с: PRIMARY INDEX
  • тогда в [A-Za-z(_,n\ ] может быть любая буква или специальные символы, за которыми следует * , потому что мы не знаем количество этих символов.
  • и это заканчивается )

Вы можете попробовать это здесь

Ответ №2:

Вы можете использовать

 re.findall(r'bPRIMARYs INDEXs w s*([^()]*)', txt)
  

Смотрите демонстрацию регулярных выражений

Подробные сведения

  • b — граница слова
  • PRIMARYs INDEX PRIMARY , 1 пробелы, INDEX
  • s — 1 пробелы
  • w — символы 1 word
  • s* — 0 пробелов
  • ( ( символ
  • [^()]* — 0 символов, отличных от ( и )
  • ) ) символ.