Python正则表达式 - 在搜索期间忽略序列

时间:2014-12-29 15:25:52

标签: python regex

我正在尝试使用python创建一种数据挖掘器。我要研究的是希腊语词典。这个词典最初是PDF格式的,我把它变成了一个粗略对应的HTML格式,以便更容易地解析它。由于数据结构严重失真,我已对其进行了一些进一步的格式化。

我目前的任务是找到并单独存储单个单词及其说明。因此,首先想到的是,除了描述之外,首先要识别出这些词。单词空间的标题具有非常特定的语法,我使用它来创建相应的正则表达式以匹配它们中的每一个。

但是有一个问题。尽管到目前为止我已经对HTML做了格式化,但仍有许多点,其中一系列逻辑数据被序列< / BR>然后是换行符,随机顺序。是否有任何方法可以指示我的正则表达式“忽略”该序列,即在满足时将某个序列视为不存在,从而包括那些被它中断的匹配?

即没有放一个(< br /> \ n)?在我的RE的每个部分,涵盖所有可能的情况。

我使用的正则表达式如下:

(ο|η|το)?( )?<b>([α-ωάέήίόύώϊϋΐΰ])*</b>(, ((ο|η|το)? <b>([α-ωάέήίόύώϊϋΐΰ])*</b>))*( \(.*\))? ([Α-Ω])*\.( \(.*\))?<b>:</b>  

并且当数据没有被上面给出的序列中断时,匹配很好。

在不理解的情况下,问题在于中断序列可以在匹配中的任何地方发生,因此我正在寻找除了覆盖可能发生序列的每个点的方法(忽略序列以决定是否正如我之前解释的那样,是否返回一场比赛。

1 个答案:

答案 0 :(得分:1)

你要求的是一个不同的正则表达式。

新的正则表达式将是旧的正则表达式,在每个非量词字符后面都有(<br\s*?/>\n?)?等。

你可以写一些东西来将正则表达式转换成你正在寻找的形式。它会占用你现有的正则表达式并产生一个容忍正则表达式。正则表达式语法中没有构造可以自动为您执行此操作。

我认为更容易做的是将源文档置换为不包含您想要忽略的序列。这应该是一个简单的文本替换。

如果不是明确使用<b>标签来表示意义,那么另一种选择就是只使用纯文本文档内容而不是HTML内容。

相关问题