我想刪除出現在字符串末尾的字詞。例如,LTD
,CORP
,LLC
, INC
。 [總共有大約50個左右的不同術語,我想從字符串末尾移除]。如何避免需要遞歸地使用正則表達式來刪除字符串末尾的單詞?
我的問題與如何刪除這些術語的序列,例如與字符串「COMPANY_NAME CORP LTD」。在這種情況下,我想刪除CORP
和LTD
[即一旦LTD
已被刪除,這個詞現在終止於CORP
,我也想去]。
目前,我是遞歸地執行此操作,一遍又一遍地運行正則表達式,直到它不再進行更改。
import re
def re_run_match(match_term, replace_with, string):
new_string_temp = re.subn(match_term, replace_with, string)
if new_string_temp[1] == 0:
return(new_string_temp[0])
else:
return(re_run_match(match_term, replace_with, new_string_temp[0]))
long_match_set = r" LTD$| CORP$| LLC$| INC$"
company_name = "COMPANY_NAME CORP LTD"
clean_company_name = re_run_match(long_match_set, "", company_name)
是否有一種比這更簡單的方法,而不需要遞歸?目前,每個字符串都需要經過2-3次正則表達式才能不需要進一步的調整,因此使代碼比單次操作的方式慢2到3倍。
注意:我不想刪除不在字符串末尾的字詞,因此我不僅僅使用匹配字詞,如r"\bLTD\b|\bCORP\b|\bLLc\b|b\INC\b"
。
嘗試['(?:(?:LTD | CORP | LLC | INC))+ $'](https://regex101.com/r/dG8iN9/1)正則表達式。 –
@stribizhev @stribizhev - 謝謝,認爲這是完美的 - 只是運行數據現在:-) – kyrenia
好極了,我終於讓我的兒子睡覺了,並且發佈了答案:) –