我想洗掉數字和后面的字串直到句子結束,而不是句子開頭的數字。
例如。從“1903type18pieces”中洗掉“18pieces”,而不是整個“1903type18pieces”,正確的代碼可能類似于:
re.sub("(?<!\d )\d. ?$", "", string)
但想不通
uj5u.com熱心網友回復:
嗯,當然你可以...
import re;
print(re.sub("18pieces", "", "1903type18pieces"));
但這很愚蠢,正常替換就可以了。
你試著重新表述你的問題怎么樣?
uj5u.com熱心網友回復:
關于您嘗試的模式的一些說明:
Python re 不支持像(?<!\d ).
但是像這樣,模式仍然會匹配它在字串中遇到的第一個數字,因為后視斷言左邊不應該有數字,這在字串的開頭也是正確的。
在這部分. ?$你可以省略 ? 以防止回溯,因為該部分將匹配到字串的末尾。使用 here 意味著字串的長度應至少為 2 個字符
您可以使用正向后視斷言左邊有一個不是數字或空白字符的字符,然后匹配一個數字和該行的其余部分。
(?<=[^\s\d])\d.*
正則運算式演示
import re
text = "1903type18pieces"
print (re.sub("(?<=[^\s\d])\d.*", "", text))
輸出
1903type
如果還可以直接在左側斷言換行符或空格,則可以使用:
re.sub(r"(?<=\D)\d.*", "", text)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/351862.html
標籤:正则表达式 python-2.7
上一篇:空格鍵在mac上的VisualStudioCode中作業很奇怪
下一篇:如何修復GoogleAppEnginedev_appserver.py:watcher_ignore_re標志“不是JSON可序列化”錯誤?[復制]
