我不确定这是否是正确的地方张贴这篇文章,并为标题抱歉,但我正在解析一个PDF到一个CSV的,我已经决定与一个正则表达式为每行由于不稳定的格式。你知道吗
我添加了,来表示匹配的位置。如果你把它们拿出来,那就是原始的绳子。第一行是标准,其他行是缺少列的一些显示方式。看看正则表达式是一个很好的暗示
它需要匹配:
12, 16:00:30, P, 14, ______________ ABC12345678, N,
JOE B'obby, MY COMPANY-23 / NAME, 23, 2
212, 14:00:30,, 212, ______________ ABC12345678, NCh,
BOB Joe Joe, MY NAME, 300, 12,
2, 13:00:30, P, 2, ______________ ABC12345678,, BOB
Joe °,,, 20
3, 15:15:00, P, 132, ______________ ABC12345678,, PHO
Guy Guy °,,,,
这就是我目前所拥有的。你知道吗
sl_re = r'(\d+)' \
r'[ ]+(\d+:\d+:\d+)' \
r'[ ]+([P]*)' \
r'[ ]+(\d+)' \
r'[ ]+([_ ]+[A-Z]+\d+)' \
r'[ ]+([A-Za-z]{,3}|[ ])' \
r'[ ]+([\w\']+[ ][\w\'°]+[ ]{,1}[\w\'°]*[ ]{,1}[\w\'°]*)'\
r'[ ]*([\w\-/ ]*|[ ])' \
r'[ ]*(\d*|[ ])' \
r'[ ]*(\d*$)'
它匹配所有的东西,直到最后3组完美,但第三到最后一组太贪婪,将匹配所有
多亏了@tripleee的帮助,我找到了解决问题的方法。正如他所说,这个问题只是更加明确了。你知道吗
因为有很多可选的和不可预见的组组合需要*(0或更多),所以确保它们在可能的情况下是非贪婪的是很重要的。只有当我希望它们尽可能匹配所有内容(组之间的空间)时才使用贪婪搜索,当我希望它在下一次匹配时停止时才使用非贪婪搜索。很基础,但这是一个很好的学习机会!你知道吗
只有最后几行发生了变化,添加了一些字符,我发现这些字符是通过测试用例需要的:
相关问题 更多 >
编程相关推荐