簡體   English   中英

Python 正則表達式反向引用以交換字符串中的字符

[英]Python regex backreference to swap characters in a string

我正在嘗試使用反向引用將“hello World”中的 h 和 w 交換為“wello horld”。 我能夠捕獲該組,但是當我在 sub() 方法中引用該組時出現問題。

import re
st = "hello world"
t = re.compile(r"(\w).+\s(\w).+")
res = t.sub(r"\2 \1",st)
print(res)

我得到 output 作為“wh”而不是所需的字符串。 我錯過了什么?

您的正則表達式方法有問題。 您應該為每個單詞捕獲兩組,即單詞的第一個字符和 rest。 實際上,我們可以只捕獲第二個單詞的第一個字母。

st = "hello world"
output = re.sub(r'(\w)(\w*) (\w)', r'\3\2 \1', st)
print(output)  # wello horld

您沒有正確捕獲第一個匹配項。 以下內容將為您工作:

import re st = "hello world" t = re.compile(r"(?<=\w)\.(?=\w)") res = t.sub(r"\2 \1",st) print(res)

說明: (?<=\w) 是一個積極的后向斷言,它確保我們在匹配除空格或行尾之外的任何字符時至少有一個單詞字符,類似地 (?=\w) 是積極的前瞻斷言,確保在我們當前的 position 之后有一個字 char。 還要注意如何。 匹配文字點和特殊的正則表達式元字符。 希望能幫助到你

暫無
暫無

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

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