RegEx Group 返回问题:
(?P
目标: 从每个问题/答案/演讲者类型的会议记录 pdf 中提取文本。
使用 Python:通过 PDF 中的页面交互提取文本和组问题/答案文本。
Desired Results = qa_type, page_start, page_end, line_num_start, line_num_end, qa_text
问题: 对于 [Q|A] 指示符,我只需要大写字母,但对于演讲者的头衔(先生、夫人、博士等),需要不区分大小写,Q|A 和演讲者称呼都是一个“qa_type”组.
请求:如何防止'qa_type'捕获'a'或'q'?请参阅第 275 页第 2 行和第 17 行。
regex = r"(^(?P
这听起来很像这个问题。不幸的是,似乎 python 内联标志修饰符已被弃用。您仍然可以尝试使用它们,在这种情况下,您的正则表达式将如下所示(没有全局不区分大小写的标志):
(^(?P<line_num>[1-9]|1[0-9]|2[0-2])\b +)(?P<qa_type>(Q|A|(?i)Mr[.|:]? [a-z]+|Mrs[.|:]? [a-z]+|Ms[.|:]? [a-z]+|Miss[.|:]? [a-z]+|Dr[.|:]? [a-z]+(?-i)))?([.|:|\s]+)?(?P<type_text>\b.*)|(?i)page(?-i) (?P<page_num>\d{1,3})
另一种方法是每次需要不区分大小写的字母时都指定小写和大写字符(同样,没有全局不区分大小写标志):
(^(?P<line_num>[1-9]|1[0-9]|2[0-2])\b +)(?P<qa_type>(Q|A|[mM][rR][.|:]? [a-zA-Z]+|[mM][rR][sS][.|:]? [a-zA-Z]+|[mM][sS][.|:]? [a-zA-Z]+|[mM][iI][sS][sS][.|:]? [a-zA-Z]+|[dD][rR][.|:]? [a-zA-Z]+))?([.|:|\s]+)?(?P<type_text>\b.*)|[pP][aA][gG][eE] (?P<page_num>\d{1,3})