我有一個字符串「從a.dat';」複製表a(no = 1,name = xyz,city = c0nl)。 在此我想刪除'copy'和'from'中的單詞,但需要將文件名稱作爲: 我希望的輸出是「從a.dat複製a」;如何使用python正則表達式在一個字符串中的特定單詞前後刪除文本
任何幫助將是偉大的。我想用正則表達式。
我有一個字符串「從a.dat';」複製表a(no = 1,name = xyz,city = c0nl)。 在此我想刪除'copy'和'from'中的單詞,但需要將文件名稱作爲: 我希望的輸出是「從a.dat複製a」;如何使用python正則表達式在一個字符串中的特定單詞前後刪除文本
任何幫助將是偉大的。我想用正則表達式。
可以結合使用正則表達式模塊re
和功能sub
(替換/代替)與先行(?=from)
和回顧後(?<=copy)
- 也被稱爲lookaround,以僅除去附帶所請求的部分(.*)
在兩者之間:
import re
print re.sub(r'(?<=copy)(.*)(?=from)', '', "copy table values from 'a.dat';")
輸出
copy from 'a.dat';
(?<=\bcopy\b)[\s\S]*?(?=\s*\bfrom\b)
使用\b
和lookarounds
。參見演示。
https://regex101.com/r/sS2dM8/11
import re
p = re.compile(r'(?<=\bcopy\b)[\s\S]*?(?=\s*\bfrom\b)', re.MULTILINE)
test_str = "copy table values from 'a.dat';"
subst = ""
result = re.sub(p, subst, test_str)
輸出:copy from 'a.dat';
你可以這樣做:
import re
mystr = "copy table values from 'a.dat';"
print(re.sub('copy.*from', 'copy from', mystr))
而且你不必擔心空間,greedyness和所有。
@巴塞爾,我試過了,但我編輯的內容被拒絕了。 :(所以不能修改它。爲了清楚起見,我會再次問下面的問題:輸入字符串是「從a.dat \ g」複製表a(no = 10,name =「kavya」),並且所需的輸出是:「從a.dat複製一個\ g」 – Laawanya
你想爲「hi copy copybook fromasdf from a.dat」和「hi copybook is copy not from c.dat」輸出什麼? –
還不清楚。 'a'總是文件名的一部分嗎?你可以有:「從bar.dat拷貝表foo ....或者它總是」從foo.dat拷貝表foo ...「? –