正则表达式python组

2024-06-12 00:07:40 发布

您现在位置:Python中文网/ 问答频道 /正文

如何对文本文件中的以下行使用regex分解或解析文本。你知道吗

原始文本:

"Tommy-PC                   10.10.1.65    ",
"Michael-iPhone             10.10.2.3     ",
"TC-Table01/01/2018         10.10.3.7     "

我在使用regex如何将每一行解析为第一个组作为userdevice,第二个项作为它们的IP地址时遇到了问题。你知道吗

结果: Tommy-PC,10.10.1.65, Michael-iPhone,10.10.2.3, TC-Table01/01/2018,10.10.3.7

这是我用的

(?<username>[^a-zA-Z]) (?<ip>\d+.\d+.\d+.\d+)

如何使用逗号分隔来附加到join?你知道吗


Tags: 文本ipusernametommyregextc逗号join
2条回答

虽然我同意这里不需要正则表达式,但它们可能很有用,例如,如果您希望确保获得的IP与预期模式匹配。在这种情况下:

import re

raw = [
    "Tommy-PC                   10.10.1.65    ",
    "Michael-iPhone             10.10.2.3     ",
    "TC-Table01/01/2018         10.10.3.7     ",
]

result = []
for r in raw:
    match = re.search('(\S+)\s+(\d{2}.\d{2}.\d.\d+)', r)
    if match:
        result.append(','.join(match.group(1,2)))

# result
['Tommy-PC,10.10.1.65',
 'Michael-iPhone,10.10.2.3',
 'TC-Table01/01/2018,10.10.3.7']

正则表达式解释道:

  • (\S+)匹配任意数量的非空白字符并将其分组
  • \s+匹配任意数量的空白字符
  • \d{2}正好匹配两个小数
    • (\d{2}.\d{2}.\d.\d+)将您的IP分组在表单中xx.xx号.x.x+,最后一个点后有任意位数

match中,我们通过match.group检索这些组,索引为1(user)和2(ip)。你知道吗

Regular expressions aren't needed heresplit就可以了:

s = ["Tommy-PC                   10.10.1.65    ","Michael-iPhone             10.10.2.3     ","TC-Table01/01/2018         10.10.3.7     "]
items = [','.join(i.split()) for i in s]

# Result
['Tommy-PC,10.10.1.65', 'Michael-iPhone,10.10.2.3', 'TC-Table01/01/2018,10.10.3.7']

相关问题 更多 >