掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 809|回复: 8

[求助] 问个正则的问题,求大神回答!

[复制链接]
  • TA的每日心情
    慵懒
    2023-3-27 00:18
  • 签到天数: 606 天

    [LV.9]以坛为家II

    发表于 2018-10-30 11:51:35 | 显示全部楼层 |阅读模式

    1. 6 t* t( ]: ?% q5 D+ l5 D
    复制代码
    我想要匹配字典中的词条解释,指定我自己的class以便后期排版,通过观察我发现定义词条的一些规律,但是写正则感到很复杂。
    0 q0 z$ \( j) \6 D4 O我目前是要打算匹配罗马数字开头的词条解释,它们的筛选条件是这样的:3 W4 I1 c" u' G7 j, }  I
    1:开头是以<span class="RomanNum"><B>加一个罗马数字来匹配的,这是我的正则式(<BR>)(<span class="RomanNum"><B>[^a-z0-9]+?<\/B>)  |3 n% O0 z/ d/ T( @5 K
    2:然后我要判断如何跟后面的例句分开,我发现有几种可能性,' F/ {  @- F1 ]0 w. W$ I" z" k
        1) 结尾碰到换行符,然后紧接着是一个加粗符号,也就是<BR><B>
    # o+ J7 P, ?+ G% Z' t    2)遇到的第一个冒号,可以作为另一种判定词条结尾的标准, v! A# |% V5 H
        3)分号+加粗符号也就是;<B>来判定词条解释结束
    / H+ r9 }" C3 O  J! b    4) 但是这里有一个情况,如果单独判断分号+加粗符号的话,会把这一条解释从中间截断,所以它需要满足一个条件,就是;<BR>不能被括在括号里,而且要小心避免像3中的情况,3里面;<BR>没有被括在括号里,但是在它们的前后都有括号存在,如果单独判定说;前面不能有(,<BR>后面不能有)可能把3也pass掉了。
    9 f2 F0 ]8 @2 x0 U    5)这些条件必须作为or的关系来存在,也就是让电脑去判断词条或者以没被括在括号里的;<BR>结束,或者以遇到的第一个:结束,或者以<BR><B>结束,这几个条件先碰到哪个就匹配哪个,并且不再继续判断后面的条件。( D/ Y. Q! `' F  {2 X
    - P2 q9 ], [2 M
    不知道是否可行,我所提到的这些情况都在我附件中提供的代码里面包括了,请大神支招!
    % U/ w7 ^1 c3 {8 t) T' S9 J$ g! A

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?免费注册

    x
  • TA的每日心情
    奋斗
    2022-6-1 19:02
  • 签到天数: 377 天

    [LV.9]以坛为家II

    发表于 2018-10-30 20:42:32 | 显示全部楼层
    本帖最后由 simonfire 于 2018-10-30 21:09 编辑 0 ^. _' ?) u. v7 B' @/ P) g
    preachers 发表于 2018-10-30 19:024 p5 |! m" r5 R, L4 A
    你的这个式子挺好的,把我比较主要犯难的地方解决了,而且还用了lookahead,方便我后期插入class,赞!
    8 G& _& q! ~( \) ` ...

      f, L+ P) C) R! y如果其他例外的数据也是像was第II条那样的话,后面的断言部分可以加上<EX,写成下面那样就ok了
    # D! T: h% t2 k  n
    1 {* v8 D" \9 u+ ~. G  D! i8 ?# Dps:解决了就好,括号匹配后面那个;?可以去掉的,前面的.已经包括它了。
    $ m& V( y% R! ^" ?9 |  a" ~- m
    1. (?=((?!\()<B)|<EX)
    复制代码
    & G  N% Y1 y# ^  @+ Y7 o1 ?3 U% K

    评分

    1

    查看全部评分

  • TA的每日心情
    奋斗
    2022-6-1 19:02
  • 签到天数: 377 天

    [LV.9]以坛为家II

    发表于 2018-10-30 18:13:22 | 显示全部楼层
    本帖最后由 simonfire 于 2018-10-30 18:49 编辑
    ( i* l. x" D0 j3 ^% z9 U8 m- I' P8 l: b! d# _+ E
    没太看明白你的需求,按着我的理解写了一个,你满足你说的那几条不,\1引用匹配就行(用的emeditor)
    2 P# P  i. v4 k' b& d0 K
    ! M: b8 k+ \( [9 [7 [3 m
    这个还不完全,没考虑括号不在释义末尾的情况0 f, V& w- _1 N9 W1 H
    1. (<span class="RomanNum"><B>\w+</B>((?!(<BR>)|(B>)|(\()).)+(\(.+?\);?)*)(?=(?!\()<B)
    复制代码
    $ Z. W. V7 c# z; \, o, G

    评分

    1

    查看全部评分

  • TA的每日心情
    慵懒
    2023-3-27 00:18
  • 签到天数: 606 天

    [LV.9]以坛为家II

     楼主| 发表于 2018-10-30 11:57:40 | 显示全部楼层
    我为什么看不到自己发的图片呢?我一点编辑图片又会出来,看帖又没有,郁闷啊~~~
  • TA的每日心情
    慵懒
    2023-3-27 00:18
  • 签到天数: 606 天

    [LV.9]以坛为家II

     楼主| 发表于 2018-10-30 13:31:51 | 显示全部楼层
    我发不出帖子来,总说我长度超过限制,实际上就几个字两张不大的图而已⋯⋯3 y3 b$ ]& Z2 P  S' e  i5 |
  • TA的每日心情
    奋斗
    2022-6-1 19:02
  • 签到天数: 377 天

    [LV.9]以坛为家II

    发表于 2018-10-30 14:27:31 | 显示全部楼层
    preachers 发表于 2018-10-30 13:31, W& k) Z2 p2 d; A) }
    我发不出帖子来,总说我长度超过限制,实际上就几个字两张不大的图而已⋯⋯3 l3 N/ O! q+ ^) c3 o5 _
    ...

    # k4 M" p) Y/ C/ b( |& B2 }$ N% C3 ?
    ; l& a2 a2 j0 N, ~0 m5 e7 W& m
    帮你补个图,你上传图片是不是上传的base64字符串啊,那样肯定超过字符限制了,还不好好显示
    % A9 P3 O5 E- F+ L/ P
    4 I7 E0 C" t+ R( f
  • TA的每日心情
    开心
    2023-1-18 23:24
  • 签到天数: 211 天

    [LV.7]常住居民III

    发表于 2018-10-30 15:00:51 | 显示全部楼层
    本帖最后由 kyletruman 于 2018-10-30 15:02 编辑 " b! V3 A$ L" X2 r  s, @

    0 n9 t4 O7 Q9 g6 N$ X5 `8 K/ t建议楼主重新编辑帖子(编辑帖子时勾选右上角的“纯文本”),把代码插入代码编辑器<>,图片一直在缓存转圈,什么都看不见
  • TA的每日心情
    慵懒
    2023-3-27 00:18
  • 签到天数: 606 天

    [LV.9]以坛为家II

     楼主| 发表于 2018-10-30 20:40:57 | 显示全部楼层
    simonfire 发表于 2018-10-30 14:274 C' a) Y! j. W. z. k' ~
    帮你补个图,你上传图片是不是上传的base64字符串啊,那样肯定超过字符限制了,还不好好显示
    " q: R' ]1 A& X  R+ ^0 \4 V. F8 a0 C) [! ^6 n3 f/ e' Y+ b/ Q
    ...
    0 J; v3 E" k: k; G# h
    啊,搞定了!谢谢版主,我发现那个后面没有<B>情况的源码里面有个<EXAMPLEU>,这样在你的式子基础上加上|<E就完美解决了。不知道后面测试还会不会有例外。* O" n; G& u9 F7 S9 @) V$ a+ K
    最终的式子在这里!# E" _' c" V. H" A
  • TA的每日心情
    开心
    2019-8-21 08:44
  • 签到天数: 163 天

    [LV.7]常住居民III

    发表于 2018-11-13 11:20:18 | 显示全部楼层
    试试 jquery 或 python 的 pyquery,会比正则顺畅许多……
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2025-5-5 22:57 , Processed in 0.027344 second(s), 24 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表