例如:去除括號替換第一場比賽
string = '(hello) advanced technologies (2015)'
我想刪除(你好),但保留(2015年)。 我在網上搜索,並得到:
newstring = re.sub(r'\((?:[^)(]|\([^)(]*\))*\)',"",string)
但它同時刪除括號:
advanced technologies
我怎樣才能改變重語句刪除僅第一個括號?
例如:去除括號替換第一場比賽
string = '(hello) advanced technologies (2015)'
我想刪除(你好),但保留(2015年)。 我在網上搜索,並得到:
newstring = re.sub(r'\((?:[^)(]|\([^)(]*\))*\)',"",string)
但它同時刪除括號:
advanced technologies
我怎樣才能改變重語句刪除僅第一個括號?
如果你真的只想要刪除的第一場比賽,你可以通過count
參數sub
:
re.sub(r'\((?:[^)(]|\([^)(]*\))*\)', '', string, count=1)
結果:
' advanced technologies (2015)'
如果你真的想要的東西更花哨,喜歡養括號內的所有年份,請在您的問題中註明。
re.sub()
具有計數參數相匹配的字母數字使用\w
import re
string = '(hello) advanced technologies (2015)'
newstring = re.sub(r'\(\w+\)', "", string, 1)
print(newstring)
# advanced technologies (2015)
除了count=1
答案(都好),你可以選擇第一組,如果你知道它例如總是在字符串的開頭:
assert re.sub(r'^\([^)]*\)', '', '(a)(b)') == '(b)'
如果它幾乎在開始時可能會有類似的情況,例如是否允許空格。
順便說一句,「貪婪」在模式匹配中有一個特定的含義,那就是匹配從第一個左括號到最後一個右括號的所有內容。就你而言,也許「只更換第一場比賽」更合適。 –