我一直试图从PDF中提取某些文本转换成文本文件。PDF来自不同的来源,我不知道它们是如何生成的。在
我试图提取的模式是一个简单的两个数字,后跟一个连字符,然后是另外两个数字,例如12-34。因此,我编写了一个简单的regex \d\d-\d\d
,并希望它能起作用。在
然而,当我测试它时,我发现它漏掉了一些命中率。后来我注意到至少有两个连字符表示为\u2212
和{\d\d[-\u2212\xad]\d\d
,它起作用了。在
我的问题是,既然我要提取这么多PDF文件,我不知道还有什么其他连字符的变体,那么有没有正则表达式覆盖所有的“连字符”,希望看起来比[-\u2212\xad]
表达式更好?在
您在问题标题中要求的解决方案暗示了一种白名单的方法,意味着您需要找到您认为类似于连字符的字符。在
您可以参考Punctuation, Dash Category,该Unicode目录列出了所有可能的Unicode连字符。在
您可以使用PyPi regex module并使用
\p{Pd}
模式来匹配任何Unicode连字符。在或者,如果只能使用
re
,请使用您可以使用其他Unicode字符扩展此列表,这些字符的Unicode名称中包含
minus
,请参见this list。在黑名单方法意味着您不希望在两对数字之间匹配特定的字符。如果要匹配任何非空白,可以使用
\S
。如果要匹配任何标点或符号,请使用(?:[^\w\s]|_)
。在相关问题 更多 >
编程相关推荐