我正在尝试使用正则表达式提取元素,同时还需要区分哪些行末尾有“-External”。我正在使用的命名结构是:
<ServerName>: <Country>-<CountryCode>
or
<ServerName>: <Country>-<CountryCode>-External
例如:
test1 = 'Neo1: Brussels-BRU-External'
test2 = 'Neo1: Brussels-BRU'
match = re.search(r'(?<=: ).+', test1)
print match.group(0)
这给了我“布鲁塞尔-BRU”。我试图分别提取“布鲁塞尔”和“BRU”,而不关心:
左边的任何内容。
之后,我需要知道一行有“-External”。有没有办法可以将“-External”的存在视为True
而不是None
?
答案 0 :(得分:0)
我建议这里不需要正则表达式,只需简单的拆分或2就可以得到你想要的东西。这是一种将split()
行分成片段的方法,然后您可以从中选择您感兴趣的内容:
def split_it(a_string):
on_colon = a_string.split(':')
return on_colon[0], on_colon[1].strip().split('-')
tests = (
'Neo1: Brussels-BRU-External',
'Neo1: Brussels-BRU',
)
for test in tests:
print(split_it(test))
('Neo1', ['Brussels', 'BRU', 'External'])
('Neo1', ['Brussels', 'BRU'])
列表的长度可用于确定是否存在附加字段'External'
。