Если вы хотите только JJ * N, вы можете сделать что-то вроде этого:
import re
text = '''paper NN
parallel NN
programming VBG
practical JJ
Greg NNP
Wilson NNP
intended VBD
scientist NN
interested JJ
'''
pattern = re.compile('\w+? JJ\n\w+ NN.?', re.DOTALL)
result = pattern.findall(text)
print(result)
выход
['practical JJ\nGreg NNP']
Объяснение
Шаблон '\w+? JJ\n\w+ NN.?'
соответствует группе букв \w+
, за которой следует пробел, за которым следует JJ, затем \n
, за которым следует другая группа букв, за которой следует что-то с префиксом NN
. Обратите внимание, что я включил оба слова, потому что я думаю, что это может быть полезно для ваших целей.
UPDATE
Если вы хотите ноль или более прилагательных JJ*
, за которыми следует одно или несколько существительных NN+
, вы можете сделать что-то вроде этого:
import re
text = '''paper NN
parallel NN
programming VBG
practical JJ
Greg NNP
Wilson NNP
intended VBD
scientist NN
interested JJ
'''
pattern = re.compile('(\w+? JJ\n)*(\w+ NN\w?)+', re.DOTALL)
result = pattern.finditer(text)
for element in result:
print(element.group())
print('----')
выход
paper NN
----
parallel NN
----
practical JJ
Greg NNP
----
Wilson NNP
----
scientist NN
----