如何解决python中用于将rtf转换为文本的正则表达式
我将在我的 rtf 文件中使用这个正则表达式:
((?:^|\s)[^\s\\]+(?:\\(?!line)[A-Za-z]+\n?(?:-?\d+)?[ ]?)+)(\b[^\s\\])
正如您在 https://regexr.com/
中看到的xxx\par\fi-240\li720 无法完全匹配,因为我的 rtf 文件中有“-->”。正则表达式只能检测到“xxx\par\fi-”
你知道如何解决它吗?
这是我的 rtf 文件:
{\rtf1\ansi\ansicpg1252\cocoartf2513
\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\froman\fcharset0 Times-Roman;}
{\colortbl;\red255\green255\blue255;}
{\*\expandedcolortbl;;}
\paperw15000\paperh15840\margl1440\margt1440\margr1440\margb1440\deftab1134\widowctrl\lytexcttp\formshade\headery720\footery720\pgwsxn15000\pghsxn15840\marglsxn1440\margtsxn1440\margrsxn1440\margbsxn1440\pgbrdropt32\pard\pard\fi-240\li720\tx1200\tx1920\tx2640\tx3360\tx4080\tx4800\tx5520\tx6240\tx6960\tx7680\tx8400\tx9120\tx9840\tx10560\itap0\nowidctlpar\plain\f2\fs20\b\chshdng0\chcfpat0{XX,XX XX\plain\f2\fs20\chshdng0\chcfpat0\par\fi-240\li720\tx1200\tx1920\tx2640\tx3360\tx4080\tx4800\tx5520\tx6240\tx6960\tx7680\tx8400\tx9120\tx9840\tx10560 URN: xxx DOB: xx Sex: XX\par\fi-240\li720\tx1200\tx1920\tx2640\tx3360\tx4080\tx4800\tx5520\tx6240\tx6960\tx7680\tx8400\tx9120\tx9840\tx10560 Home address: 3 xxx xx,xxxxx 3134\par\pard\fi-240\li720\pard\pard\fi-240\li720\itap0\nowidctlpar Home Phone: Mobile Phone:}
xxxx\par\fi-240\li720 swab xxx\par\fi-240\li720 to d/w xxxx\par\fi-240\li720 -->case x/ XX\par\fi-240\li720 to x/x xxx}
解决方法
当前模式捕获最后一组中的 (\b[^\s\\])
,它以单词边界开始,并期望匹配除 \
之外的单个非空白字符
在示例数据中,空白字符之后的下一个字符是-
,并且空白字符和-
之间没有单词边界。
您可能会做的是使用在 -
之后也接受 (\b[^\s\\]|-)
的替代方案
模式看起来像
((?:^|\s)[^\s\\]+(?:\\(?!line)[A-Za-z]+\n?(?:-?\d+)?[ ]?)+)(\b[^\s\\]|-)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。