Python使用正则表达式提取字符串的出现

时间:2016-08-01 20:38:15

标签: python regex

我需要一个python正则表达式来从行中提取所有出现的字符串。

例如,

line = 'TokenRange(start_token:5835456583056758754, end_token:5867789857766669245, rack:brikbrik0),EndpointDetails(host:192.168.210.183, datacenter:DC1, rack:brikbrikadfdas), EndpointDetails(host:192.168.210.182, datacenter:DC1, rack:brikbrik1adf)])'

我想提取包含机架ID的所有字符串。我对reg ex很蹩脚,所以当我查看python文档时却找不到正确使用re.findAll或类似的正则表达式。  有人可以用正则表达式帮助我吗? 这是我需要的输出:[brikbrik0,brikbrikadfdas,brikbrik1adf]

2 个答案:

答案 0 :(得分:3)

您可以捕获>>> re.findall(r"rack:(\w+)", line) ['brikbrik0', 'brikbrikadfdas', 'brikbrik1adf'] 之后的字母数字:

{{1}}

答案 1 :(得分:2)

rack添加字边界

\brack:(\w+)

请参阅a demo on regex101.com

<小时/> 在Pythondemo on ideone.com):

import re
string = """TokenRange(start_token:5835456583056758754, end_token:5867789857766669245, rack:brikbrik0),EndpointDetails(host:192.168.210.183, datacenter:DC1, rack:brikbrikadfdas), EndpointDetails(host:192.168.210.182, datacenter:DC1, rack:brikbrik1adf)])"""
rx = re.compile(r'\brack:(\w+)')

matches = [match.group(1) for match in rx.finditer(string)]
print(matches)