亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

python用正則表達式替換模式

python用正則表達式替換模式

婷婷同學_ 2023-05-23 14:32:41
我有這個字符串。a='SAD; Happy; ING:train coca'ORa='SAD; Happy; ING(train coca'ORa='SAD, Happy, ING[train coca'我需要檢測這個字符串:“; ING:”為此我使用了這個正則表達式:listRE=re.findall(r';\s*[A-Z]+\s*[\:|\[|\(]\s*[A-Z]+', a)我需要做的是刪除介于兩者之間的內容;和 :(并不總是 ; : 如正則表達式所示)我這樣做for i in listRE:   p=re.compile(i)   a=re.sub(p, r'', a)但它正在刪除我的文字!我的目標是:a='SAD; Happy; train coca'非常歡迎您的幫助 謝謝您的幫助
查看完整描述

3 回答

?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

這是做的工作:


import re


strs = [

    'SAD; Happy; ING:train coca',

    'SAD; Happy; ING(train coca',

    'SAD, Happy, ING[train coca',

]

for str in strs:

    x = re.sub(r'(?<=[;,])\s+[A-Z]+[:([]', ' ', str)

    print x

輸出:


SAD; Happy; train coca

SAD; Happy; train coca

SAD, Happy, train coca

演示與解釋


查看完整回答
反對 回復 2023-05-23
?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

您不需要使用findall——您可以直接使用匹配您需要的所有情況的正則表達式模式。我還修復了一些你的正則表達式:


import re

a = 'SAD; Happy; ING:train coca'

b = "SAD; Happy; ING(train coca"

c = "SAD, Happy, ING[train coca"


print(re.sub(r'(?<=;|,)(\s*)[^:[(;,]*[:[(]', r'\1', a))

print(re.sub(r"(?<=;|,)(\s*)[^:[(;,]*[:[(]", r"\1", b))

print(re.sub(r"(?<=;|,)(\s*)[^:[(;,]*[:[(]", r"\1", c))


"""

output:

SAD; Happy; train coca

SAD; Happy; train coca

SAD, Happy, train coca

"""


查看完整回答
反對 回復 2023-05-23
?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

如果您還想匹配評論中的字符串,您可以使用

\s+\w+\s?[:([]\s*

在替換中使用空格。

正則表達式演示Python演示


如果您可以匹配冒號或從開始到結束的括號,您可以使用交替匹配或者:使用 2 捕獲組,您將匹配內容以保留在括號[...]之間(...)

\s+\w+\s?(?::|\(\s*([^()]+)\s*\)|\[\s*([^]\[]+)\s*])\s*

在替換中使用空格和兩個捕獲組r' \1\2'

正則表達式演示Python演示


查看完整回答
反對 回復 2023-05-23
  • 3 回答
  • 0 關注
  • 217 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號