我正在尝试用 python 制作一种数据挖掘器。我要检查的是一本希腊语词典。说的字典本来是PDF格式的,我把它转成大致对应的HTML格式,方便解析。我对它做了一些进一步的格式化,因为数据结构被严重扭曲了。
我当前的任务是查找并单独存储各个单词及其描述。因此,想到这一点的第一个想法是首先识别单词,而不是它们的描述。单词空间的标题有一个非常特定的语法,我用它来创建一个相应的正则表达式来匹配它们中的每一个。
不过有一个问题。尽管到目前为止我已经对 HTML 进行了格式化,但仍然有很多点,其中一系列逻辑数据被序列
后跟换行符以随机顺序中断。有什么方法可以指示我的正则表达式“忽略”该序列,即在遇到该特定序列时将其视为不存在,并因此包括那些被它打断的匹配项?
也就是说,不放一个 (< br/>\n)?在我的 RE 的每个部分,涵盖所有可能的情况。
我使用的正则表达式如下:
(ο|η|το)?( )?<b>([α-ωάέήίόύώϊϋΐΰ])*</b>(, ((ο|η|το)? <b>([α-ωάέήίόύώϊϋΐΰ])*</b>))*( \(.*\))? ([Α-Ω])*\.( \(.*\))?<b>:</b>
当数据没有被上面给出的序列中断时,并且在匹配方面做得很好。
如果不理解,问题在于中断序列可以出现在比赛中的任何地方,因此我正在寻找一种方法,而不是覆盖序列可能出现的每个单独点(在决定是否忽略序列时忽略序列)是否返回匹配项),正如我之前解释的那样。
请您参考如下方法:
您要的是一个不同的正则表达式。
新的正则表达式将是旧的,带有(<br\s*?/>\n?)?或在每个非量词字符之后。
您可以编写一些东西来将正则表达式转换为您正在寻找的形式。它会接受您现有的正则表达式并生成一个 br 容错的正则表达式。正则表达式语法中不存在自动为您执行此操作的结构。
我认为更容易的做法是将源文档置换为不包含您希望忽略的序列。这应该是一个简单的文本替换。
如果不是因为您明确使用了 <b>标签的含义,另一种方法是只采用纯文本文档内容而不是 HTML 内容。
