我需要一个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]
答案 0 :(得分:3)
您可以捕获>>> re.findall(r"rack:(\w+)", line)
['brikbrik0', 'brikbrikadfdas', 'brikbrik1adf']
之后的字母数字:
{{1}}
答案 1 :(得分:2)
向rack
添加字边界:
\brack:(\w+)
<小时/>
在Python
(demo 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)