Если вы в порядке, используя re.sub
, вы можете использовать это регулярное выражение для замены сопоставленного текста пустой строкой,
^[^\d\n]*signing bonus\s*|\s*signing bonus[^\d\n]*$
В первых двух случаях вы намереваетесь захватить строку после signing bonus
, но в третьем случае ваша предполагаемая строка - до signing bonus
, поэтому для этого вам нужно другое регулярное выражение с использованием чередования.
Regex Demo
код Python,
import re
arr = ['Your signing bonus is 123,000','This year signing bonus is bad. the signing bonus for this year is EUR 123,000','The bonus is 14,456, but signing bonus.']
for s in arr:
print(s, '-->', re.sub(r'^[^\d\n]*signing bonus\s*|\s*signing bonus[^\d\n]*$', '', s))
печать
our signing bonus is 123,000 --> is 123,000
This year signing bonus is bad. the signing bonus for this year is EUR 123,000 --> for this year is EUR 123,000
The bonus is 14,456, but signing bonus. --> The bonus is 14,456, but