import re
child_keywords = ["土木一式工事", "産業用機器", "事務用品・機器"]
body_lower = '''01 事務用品・機器
大阪府警察大正警察署:指サック等の購入 :大阪市大正区
https://w...content-available-to-author-only...a.jp/CALS/Publish/EbController?Shori=SmallKokokuInfo&open_kokoku=01202350042214
01 事務用品・機器
府立学校大阪わかば高等学校:校内衛生用品7件 ★ :大阪市生野区
https://w...content-available-to-author-only...a.jp/CALS/Publish/EbController?Shori=SmallKokokuInfo&open_kokoku=01202350041978
01 事務用品・機器
府立学校工芸高等学校:イレパネ 他 購入 :大阪市阿倍野区
https://w...content-available-to-author-only...a.jp/CALS/Publish/EbController?Shori=SmallKokokuInfo&open_kokoku=01202350042117'''
for paragraph_text, child_keyword, url in re.findall(rf'([^\n]*({"|".join(map(re.escape, child_keywords))})[^\n]*).*?\b(https?://\S+)', body_lower, re.S):
print(f'{paragraph_text=}', f'{child_keyword=}', f'{url=}', sep='\n')
aW1wb3J0IHJlCgpjaGlsZF9rZXl3b3JkcyA9IFsi5Zyf5pyo5LiA5byP5bel5LqLIiwgIueUo+alreeUqOapn+WZqCIsICLkuovli5nnlKjlk4Hjg7vmqZ/lmagiXQpib2R5X2xvd2VyID0gJycnMDEg5LqL5YuZ55So5ZOB44O75qmf5ZmoCgrlpKfpmKrlupzorablr5/lpKfmraPorablr5/nvbLvvJrmjIfjgrXjg4Pjgq/nrYnjga7os7zlhaXjgIAg44CA77ya5aSn6Ziq5biC5aSn5q2j5Yy6CgpodHRwczovL3cuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLmEuanAvQ0FMUy9QdWJsaXNoL0ViQ29udHJvbGxlcj9TaG9yaT1TbWFsbEtva29rdUluZm8mb3Blbl9rb2tva3U9MDEyMDIzNTAwNDIyMTQKCjAxIOS6i+WLmeeUqOWTgeODu+apn+WZqAoK5bqc56uL5a2m5qCh5aSn6Ziq44KP44GL44Gw6auY562J5a2m5qCh77ya5qCh5YaF6KGb55Sf55So5ZOB77yX5Lu244CA4piF44CA77ya5aSn6Ziq5biC55Sf6YeO5Yy6CgpodHRwczovL3cuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLmEuanAvQ0FMUy9QdWJsaXNoL0ViQ29udHJvbGxlcj9TaG9yaT1TbWFsbEtva29rdUluZm8mb3Blbl9rb2tva3U9MDEyMDIzNTAwNDE5NzgKCjAxIOS6i+WLmeeUqOWTgeODu+apn+WZqAoK5bqc56uL5a2m5qCh5bel6Iq46auY562J5a2m5qCh77ya44Kk44Os44OR44ON44CA5LuW44CA6LO85YWl44CAIOOAgO+8muWkp+mYquW4gumYv+WAjemHjuWMugoKaHR0cHM6Ly93Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5hLmpwL0NBTFMvUHVibGlzaC9FYkNvbnRyb2xsZXI/U2hvcmk9U21hbGxLb2tva3VJbmZvJm9wZW5fa29rb2t1PTAxMjAyMzUwMDQyMTE3JycnCgpmb3IgcGFyYWdyYXBoX3RleHQsIGNoaWxkX2tleXdvcmQsIHVybCBpbiByZS5maW5kYWxsKHJmJyhbXlxuXSooeyJ8Ii5qb2luKG1hcChyZS5lc2NhcGUsIGNoaWxkX2tleXdvcmRzKSl9KVteXG5dKikuKj9cYihodHRwcz86Ly9cUyspJywgYm9keV9sb3dlciwgcmUuUyk6CiAgICBwcmludChmJ3twYXJhZ3JhcGhfdGV4dD19JywgZid7Y2hpbGRfa2V5d29yZD19JywgZid7dXJsPX0nLCBzZXA9J1xuJyk=