簡體   English   中英

Python 正則表達式以捕獲兩者之間的內容

[英]Python Regex to capture whats in between

我正在嘗試編寫一個將獲得以下內容的正則表達式:

  1. 給定一個字符串
  2. 獲取 Dim 和 ( 或:或空格或,
  3. 如果未發生上述情況,則不返回任何內容

到目前為止,我已經寫了下面的內容,效果還不錯,只是我不確定如何刪除“(”或“:”或“,”

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM