gpt4 book ai didi

regex - 在正则表达式中搜索连字符和破折号的所有变体

转载 作者:太空狗 更新时间:2023-10-30 00:53:14 32 4
gpt4 key购买 nike

我一直在尝试从转换为文本文件的 PDF 中提取某些文本。 PDF 来自各种来源,我不知道它们是如何生成的。

我试图提取的模式是一个简单的两位数字,后跟一个连字符,然后是另外两位数字,例如12-34。所以我写了一个简单的正则表达式 \d\d-\d\d 并希望它能工作。

然而,当我测试它时,我发现它错过了一些点击。后来我注意到至少有两个连字符表示为 \u2212\xad。所以我将我的正则表达式更改为 \d\d[-\u2212\xad]\d\d 并且它起作用了。

我的问题是,由于我要提取如此多的 PDF,以至于我不知道还有哪些连字符的其他变体,是否有覆盖所有“连字符”的任何正则表达式,并且希望看起来比 [-\u2212\xad] 表达式?

最佳答案

您在问题标题中要求的解决方案暗示了一种白名单方法,意味着您需要找到您认为类似于连字符的字符。

您可以引用Punctuation, Dash Category ,该 Unicode 类别列出了所有可能的 Unicode 连字符。

您可以使用 PyPi regex module并使用 \p{Pd} 模式来匹配任何 Unicode 连字符。

或者,如果您只能使用re,请使用

[\u002D\u058A\u05BE\u1400\u1806\u2010-\u2015\u2E17\u2E1A\u2E3A\u2E3B\u2E40\u301C\u3030\u30A0\uFE31\uFE32\uFE58\uFE63\uFF0D]

您可以使用其他在 Unicode 名称中包含 minus 的 Unicode 字符来扩展此列表,请参阅 this list .

黑名单 方法意味着您不想匹配两对数字之间的特定字符。如果你想匹配任何非空白,你可以使用 \S。如果要匹配任何标点符号或符号,请使用 (?:[^\w\s]|_)

关于regex - 在正则表达式中搜索连字符和破折号的所有变体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48923599/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com