【发布时间】:2014-06-09 20:36:52
【问题描述】:
如何选择,在以空格分隔的 3、4 或 X 列(不是恒定空格,而是每行上有多个空格)的文件中,使用正则表达式选择每行的前 2 列?
我的文件包括:IP [SPACES] Subnet_Mask [SPACES] NEXT_HOP_IP [NEW LINE]
所有行都使用该格式。如何仅提取前 2 列? (IP 和子网掩码)
这是一个尝试正则表达式的示例:
10.97.96.0 10.97.97.128 47.73.1.0
47.73.4.128 47.73.7.6 47.73.8.0
47.73.15.0 47.73.40.0 47.73.41.0
85.205.9.164 85.205.14.44 172.17.103.0
172.17.103.8 172.17.103.48 172.17.103.56
172.17.103.96 172.17.103.100 172.17.103.136
172.17.103.140 172.17.104.44 172.17.105.28
172.17.105.32 172.17.105.220 172.17.105.224
不要查看特定的 IP。我知道第二列不是由有效的地址掩码组成的。这只是一个例子。
我已经试过了:
(?P<IP_ADD>\s*[1-9][0-9]{1,2}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})(?P<space>\s*)(?P<MASK>[1-9][0-9]{1,2}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}(\s+|\D*))
但它并不完全有效......
【问题讨论】:
-
这里为什么需要正则表达式?使用
csv模块或者只是用空格分割每一行。 -
我需要某种“单线”。我不想打开文件,关闭它,ecc。需要一些“又快又脏”的东西。
-
所以可以肯定的是,你想解析文件而不打开它?
-
我的工作需要它。我没有时间总是传入文件或将所有文本保存在文件中。我只想放一些随机字符串并得到我想要的结果
-
那么在来自重复链接的单行解决方案中,什么对您不起作用?多行?
标签: python regex parsing python-2.7