簡體   English   中英

python re.sub - 替代替換模式

[英]python re.sub - alternative replacement patterns

我想為 re.sub 提供替代替換模式。

假設我有兩種搜索模式作為替代,如下所示:

re.sub(r"[A-Z]+|[a-z]+", replacementpattern, string)

而不是提供一種替換模式,我想以某種方式捕獲匹配的搜索模式替代並提供替代替換模式。 這可能嗎? 謝謝。

附注。 這里的代碼細節無關緊要,這是一個普遍的問題。

您可以將函數傳遞給re.sub() 在函數中,您可以根據捕獲的組返回所需的值。 一個簡單的代碼說明:

>>> def fun(m):
...   if m:
...     if m.group(1):
...        return 'x'
...     else:
...        return 'y'


>>>print re.sub(r"([A-Z]+)|([a-z]+)", fun , "ab")

函數fun()檢查匹配是否成功,並根據捕獲的組返回替換字符串。 如果[AZ]+匹配, x是替換字符串,否則[az]+匹配, y是替換字符串。

欲了解更多信息:文檔

通常,您只需使用兩個替換:

re.sub(r"[A-Z]+", replacement1, string)
re.sub(r"[a-z]+", replacement2, string)

虎頭蛇尾,對吧?

它實際上比通常的替代品更少的代碼,而且你在做什么也更清楚。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM