我需要获取所有包含两个或更多空格“\ s {2,}”的文字。
给出以下文字:
IP Address Name Location Type
10.1.10.5 USLAXBOWC01RB Santa Monica, CA local
我需要提取:
第1行: "IP Address", "Name", "Location", "Type"
第2行: "10.1.10.5", "USLAXBOWC01RB", "Santa Monica, CA", "local"
修改
符合提取条件的文字:
“IP Address
”& “Name
”相隔两个或多个空格,因此它们有资格被提取。同样,“Santa Monica, CA
”& “local
”。
答案 0 :(得分:2)
您尝试根据“\s{2,}
”模式拆分文字。
因此,在Python中,正则表达式lib re
为您提供了所有需要的工具:
import re
line = "IP Address Name Location Type"
result = re.split('\s{2,}',line)
给出了:
['IP Address', 'Name', 'Location', 'Type']
修改强>
我想我更了解你的问题:你更关心在\s{2,}
之间隔离序列,而不是分裂它。但是,在您的示例中,上述解决方案似乎是最合适的。
你问了一个正则表达式,这是:
reg1 = "[^\s](?!\s{2,})(?:.(?!\s{2,}))*[^\s]"
[^\s](?!\s{2,})
后面没有两个或更多空格的空格。为此,我使用了负向前瞻断言(?!...)
; (?:...)
:任何未跟.
的字符\s{2,}
; *
; [^\s]
。 A re.findall(reg1,line)
,你应该完成。一个缺点可能是:它检测到至少两个字符长的序列。
在这种情况下,另一个更简单的正则表达式最终可以完成这项工作:reg2 = "\s{2,}([^\s])\s{2,}"
。它选择由两个或更多空格包围的单个非空格字符。使用括号(...)
,强制只返回字符。
顺便说一句,我强烈建议您查看文档:{{3}}
希望你找到你想要的东西: - )