我必须通过告诉你这个正则表达式确实令人恐惧来作为序言。我知道这一点。
我使用正则表达式匹配文本块,同时匹配空格和标记(如<example>
)。我使用以下代码创建正则表达式。
tag_re = r'(?:<[^>]*>)*\s*'
full_regex = '(' + tag_re + ''.join(
itertools.chain(*zip(
map(re.escape, text_chunk),
itertools.cycle([tag_re])))) + ')'
full_regex = full_regex.replace(' ', ' ?')
这将生成一个正则表达式,该表达式接收一个字符串并输出相同的字符串,其中tag_re
散布在每个字母之间。
test
会生成t(?:<[^>]*>)*\s*e(?:<[^>]*>)*\s*s(?:<[^>]*>)*\s*t(?:<[^>]*>)*\s*
。这将匹配:
test
,t est
,
以及在某处有换行符的test
。
生成的正则表达式似乎挂在具有大量空白的某些情况下。我认为这是一个回溯问题,但我不是一个正则表达式专家,并且无法弄清楚如何解决这个问题。在我添加空白匹配之前,RE永远不会挂起,只有标记匹配才能正常。
它挂起的数据如下。
Iyvuldja MYA Nggsnjyxnlt Mlxunb
Iayd Dysoap Ysnatx,
Xsayra tlxa xwa haslq rjwaposap cyntxatytja yjxnenxv uld vlod Iyvuldja MYA yggsnjyxnlt wyr haat jlcgsaxap.
Xdlpojxnlt Ayntxatytja Qtuldcyxnlt
Njxnenxv:
Hjwaposap Ayntxatytja
Rayrlt:
Nggsnjyxnlt Mlxunb
Hxydx xnca:
Paptarpyv, 2 Ngdns 7942 - 7:99 NA (OT)
Otp xnca:
Paptarpyv, 2 Ngdns 7942 - 2:99 NA (OT)
Qcgyjx:Sradr qnss tlx ha yhsa xl slf ntxl xwa yggsnjyxnlt ld wyea yjjarr xl Pahjsljmr podntf xwa cyntxatytja qntplq.Nss hyjmfdlotp ilhr qnss ha xacgldydnsv gyorap.Twa JTX/HJTX radeadr qnss rxnss ha yeynsyhsa.Mydpqyda jsljmr qnss jltxntoa xl yjjagx gotjwar yr tldcys.
Yltxyjx:
Vlf nt xl xwa Yorxlcad Hoggldx Xldxys yx wxxgr://roggldx.pyvuldja.jlc .
*** FGTO: Xsayra pl tlx dagsv xl xwnr carryfa, yr xwa nthlb nr tlx cltnxldap.***
Qu vlo wyea ytv yppnxnltys koarxnltr ld dakonda roggldx uld vlod Iyvuldja MYA yggsnjyxnlt gsayra jltxyjx Yorxlcad Hoggldx orntf xwa Iyvuldja Hoggldx Xldxys yeynsyhsa yx roggldx.pyvuldja.jlc.
Twnr jlccotnjyxnlt nr ntxatpap xl ha dajaneap ltsv hv xwa ntpnenpoys[r] ld atxnxv[r] xl qwlc ld xl qwnjw nx nr yppdarrap, ytp jltxyntr ntuldcyxnlt qwnjw nr jltunpatxnys, gdnensafap ytp rohiajx xl jlgvdnfwx. Ntv otyoxwldnzap ora, jlgvntf, daenaq ld pnrjslroda nr gdlwnhnxap. Xsayra tlxnuv xwa ratpad nccapnyxasv nu vlo wyea dajaneap xwnr jlccotnjyxnlt nt addld [hv jyssntf jlssajx, nu tajarrydv] rl xwyx qa jyt yddytfa uld nxr daxodt yx lod abgatra. Thank you nt ypeytja uld vlod ytxnjngyxap yrrnrxytja ytp jllgadyxnlt.
Yaxxa jlccotnjyxnlt arx parxntea otnkoacatx a sy gadrltta lo a sy gadrltta cldysa a kon assa arx ypdarrea. Ossa jltxnatx pa sntuldcyxnlt jltunpatxnassa, gdlxefea gyd sa rajdax gdluarrnlttas ax roiaxxa a par pdlnxr p'yoxaodr. Tloxa oxnsnryxnlt, dagdlpojxnlt, jltrosxyxnlt lo pneosfyxnlt tlt yoxldnrear rltx ntxadpnxar. Flor elor gdnltr pyenrad nccepnyxacatx sabgepnxaod rn elor yeaz daco jaxxa jlccotnjyxnlt gyd addaod (at yggasytx a udynr ender, rn tejarrynda), yunt koa tlor gonrrnltr gdatpda par pnrglrnxnltr glod at yrrodad sa dateln a tlr udynr. Flor elor dacadjnltr a syeytja pa elxda jllgedyxnlt.