我正在寻找一个有效的正则表达式(preferably possessive),我可以使用它来从一个大文件(5Gb)中只包含一个分隔符(',')的行:
E.G
X,Y
X1,Y1,Y2
X3,Y3
X4,Y4
X5,Y5,Z6
>>> grep“???” big_file
X,Y
X3,Y3
X4,Y4
答案 0 :(得分:7)
由于字符串的开始/结束标记,不应该简单^[^,]*,[^,]*$
避免回溯吗?
答案 1 :(得分:1)
虽然@Rawling(这里的答案之一)是正确的,他的正则表达式是正确的,它仍然没有占有性,因此没有优化,他是正确的,不会发生回溯,但它不会有最好的性能因为占有量词不必记住任何回溯位置。如问题所附链接中所述。
以下表达式将具有占有性和优化,我将与问题中提到的grep的使用一起演示:
grep -E“^ [^,] * +,[^,] * + $”big_data