[英]Python Regex to capture whats in between
我正在嘗試編寫一個將獲得以下內容的正則表達式:
到目前為止,我已經寫了下面的內容,效果還不錯,只是我不確定如何刪除“(”或“:”或“,”
def get_name(line):
subStr = re.findall(r'Dim(.+)As|$', line)[0]
return subStr
例子
txt = "Dim MyLine() As"
subStr = re.findall(r'Dim(.+)As|$', txt)[0]
#Prints MyLine(), But I want it to print MyLine
對於“Dim MyLine:”“Dim MyLine As”“Dim MyLine”,“Dim MyLine() As”的情況相同
我只想從上述所有情況中獲取“MyLine”,並且僅當它們發生時。
我不確定什么都不返回是什么意思,所以我假設您想返回None
。
>>> import re
>>>
>>>
>>> def get_name(line):
... try:
... return re.findall(r'Dim\s*(.+?)([(: ,]|$)', line)[0][0]
... except IndexError:
... return None
...
>>> get_name('Dim MyLine() As')
'MyLine'
如果沒有匹配項,則findall
返回一個空列表,因此如果我們想要訪問第一個元素,那將引發IndexError
,我們捕獲它並返回None
。
正則表達式: Dim\s*(.+?)[(: ,]
\s*
:任意數量的空白字符(
: 第一組開始.+?
: 至少一次任意字符(非貪婪匹配))
: 第一組結束[(: ,]
:這些字符之一:( (: ,
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.