Regex同一匹配组多次检测问题:如何完整匹配所有QUESTION区块
正则匹配修复方案
你的问题出在原正则会消耗掉作为结束标记的关键词,导致下一次匹配只能从该关键词之后开始,跳过了中间的问题区块(比如N°7的QUESTION被上一个匹配的结尾占用,无法被识别为新的区块开头)。
修正后的正则表达式
(?:Question|QUESTION|QCM)\s+.*?(?=(?:Question|QUESTION|QCM)\s+|$)
正则说明
(?:Question|QUESTION|QCM):匹配开头的关键词(非捕获组,不额外生成捕获结果)\s+:匹配关键词后的一个或多个空白字符(包括空格、换行).*?:非贪婪模式匹配任意字符(需开启DOTALL模式,让.能匹配换行符,不同语言开启方式:Python用re.DOTALL,JavaScript加/sflag,Java用Pattern.DOTALL)(?=(?:Question|QUESTION|QCM)\s+|$):正向先行断言,匹配到下一个关键词(带空白)或文本结尾时停止,且不会消耗该关键词,保证下一次匹配能从这个关键词开始
匹配效果
用这个正则匹配你的文本,会得到三个完整的问题区块:
QUESTION N°%6 : A PROPOS DE LA MYOLOGIE DE L EXTREMITE CEPHALIQUE : C. Le nerf facial se termine dans la loge submandibulaire. | D. Tous les muscles peauciers sont innerves par le nerf facial. . risa baile E. La contraction du muscle platysma entraine un abaissement de la lévre inférieure.QUESTION N°7 : A PROPOS DE LA MYOLOGIE DE L'EXTREMITE CEPHALIQUE : Re ear al 30 A. Le muscle buccinateur est innervé par le nerf mandibulaire. | oe ee B. La contraction du muscle élévateur nasolabial entraine une constriction de la narine.QUESTION N°8 : A PROPOS DE L'ARTICULATION TEMPOROMANDIBULAIRE : A. Les articulations temporo-mandibulaires sont de type sphéroide. mandibulaire.
内容的提问来源于stack exchange,提问作者Yassine MAMOU
相关产品推荐
相关产品推荐

