我正在尝试编写一个正则表达式,它将得到以下内容:
- 给定一个字符串
- 获取Dim和(或:或space或
- 如果没有发生上述情况,则不返回任何内容
到目前为止,我已经写了以下内容,除了我不确定如何删除";("或":"或",">
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*
:任意数量的空白字符(
:第一组启动.+?
:至少一次任意字符(非贪婪匹配()
:第一组结束[(: ,]
:其中一个字符:(: ,