查看: 510|回复: 5
打印 上一主题 下一主题

[求助] 喂鸡百科词典制作过程中,正则公式求助。

[复制链接]
  • TA的每日心情

    2018-6-15 14:54
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    38

    主题

    509

    回帖

    5035

    积分

    翰林院编修

    Rank: 11Rank: 11Rank: 11Rank: 11

    积分
    5035

    翰林院专用章灌水大神章笑傲江湖章小蜜蜂章管理组专用章

    跳转到指定楼层
    1
    发表于 2018-10-7 11:31:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 邱海波 于 2018-10-7 11:43 编辑
    北投
    <link rel='stylesheet' type='text/css' href='wiki.css' />><a href="entry://北投區">北投區</a>
    </>

    北投
    @@@LINK=北投區
    </>


    I·I·拉比
    <link rel='stylesheet' type='text/css' href='wiki.css' /><ol><li>重定向 <a href="entry://伊西多·拉比">伊西多·拉比</a></ol>
    </>

    I·I·拉比
    @@@LINK=伊西多·拉比
    </>

    目前在制作喂鸡百科中遇到正则表达式问题,请教各位,如何将第一个变成第二个。

    我自己写了两个查找的正则式都不对。

    针对第1行变第2行,查找:

    ([^\n]+)\n<link rel='stylesheet' type='text/css' href='wiki\.css' />\s*>\s*<a href="entry://([^"]+)">(.+)</a>\n</>

    针对第3行变第4行,查找:

    ([^\n]+)\n<link rel='stylesheet' type='text/css' href='wiki\.css' />\s*<ol>\s*<li>\s*重定向\s*<a href="entry://([^"]+)">(.+)</a>\s*</ol>\n</>

    以上都替换成:
    \1\n@@@LINK=\2\n</>

  • TA的每日心情
    慵懒
    2022-3-16 01:47
  • 签到天数: 389 天

    [LV.9]以坛为家II

    8

    主题

    753

    回帖

    2099

    积分

    解元

    Rank: 5Rank: 5

    积分
    2099
    推荐
    发表于 2018-11-5 22:29:45 | 只看该作者
    如果前缀css表部分的长度固定,也可以直接匹配长度,直接删除
  • TA的每日心情

    2020-6-4 09:20
  • 签到天数: 127 天

    [LV.7]常住居民III

    1

    主题

    197

    回帖

    -847

    积分

    禁止发言

    积分
    -847
    推荐
    发表于 2018-10-8 17:06:34 | 只看该作者
    楼上厉害,学习了!

    该用户从未签到

    9

    主题

    228

    回帖

    1万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    11443
    推荐
    发表于 2018-10-7 15:05:05 | 只看该作者
    邱海波 发表于 2018-10-7 14:07
    非常感谢你的帮助!我试试先

    不客气!
  • TA的每日心情

    2018-6-15 14:54
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    38

    主题

    509

    回帖

    5035

    积分

    翰林院编修

    Rank: 11Rank: 11Rank: 11Rank: 11

    积分
    5035

    翰林院专用章灌水大神章笑傲江湖章小蜜蜂章管理组专用章

    推荐
     楼主| 发表于 2018-10-7 14:07:56 | 只看该作者
    jeanleem6 发表于 2018-10-7 12:42
    单看这两条数据你的正则是可以匹配到的,不过最好用忽略优先量词(+?)去匹配,避免匹配过界。可以用我上面 ...

    非常感谢你的帮助!我试试先

    该用户从未签到

    9

    主题

    228

    回帖

    1万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    11443
    推荐
    发表于 2018-10-7 12:42:48 | 只看该作者
    本帖最后由 jeanleem6 于 2018-10-7 12:51 编辑
    1. ----------------
    2. # 第 1 条变第 2 条:

    3. # 正则:
    4. ^([^\n]+?)\n<link rel='stylesheet' type='text/css' href='wiki.css' />[\s]*?>[\s]*?<a href="entry://(?:[^\n"><]+?)">([^\n"><]+?)</a>\n</>

    5. # 替换:
    6. \1\n@@@LINK=\2\n</>

    7. ----------------
    8. # 第 3 条变第 4 条:

    9. # 正则:
    10. ^([^\n]+?)\n<link rel='stylesheet' type='text/css' href='wiki.css' />[\s]*?<ol>[\s]*?<li>[\s]*?重定向[\s]*?<a href="entry://(?:[^\n"><]+?)">([^\n"><]+?)</a>[\s]*?</ol>\n</>

    11. # 替换:
    12. \1\n@@@LINK=\2\n</>
    复制代码
    单看这两条数据你的正则是可以匹配到的,不过最好用忽略优先量词(+?)去匹配,避免匹配过界。可以用我上面的正则去匹配试试。避免编辑器加乱码,我上传一份附件吧: regexp.txt.zip (813 Bytes, 下载次数: 5)

    评分

    1

    查看全部评分