Python Regex捕获介于两者之间的内容



我正在尝试编写一个正则表达式,它将得到以下内容:

  1. 给定一个字符串
  2. 获取Dim和(或:或space或
  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'Dims*(.+?)([(: ,]|$)', line)[0][0]
...     except IndexError:
...         return None
...
>>> get_name('Dim MyLine() As')
'MyLine'

如果没有匹配,findall返回一个空列表,所以如果我们想访问第一个元素,它将引发IndexError,我们捕获它,并返回None

Regex:Dims*(.+?)[(: ,]

  • 昏暗
  • s*:任意数量的空白字符
  • (:第一组启动
  • .+?:至少一次任意字符(非贪婪匹配(
  • ):第一组结束
  • [(: ,]:其中一个字符:(: ,

最新更新