正则问题,来看看吧 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
p1956
V2EX    程序员

正则问题,来看看吧

  •  
  •   p1956 2023-08-07 09:01:52 +08:00 2596 次点击
    这是一个创建于 801 天前的主题,其中的信息可能已经有所发展或是发生改变。
    <tr><td>532775<td><i>NULL</i><td><i>NULL</i><td><i>NULL</i><td> 林萍 <td> <td> <td> h0017byu1hc <td> 1049 <td> <td>62588<td> 001 <td><i>NULL</i><td>00532775 <td><i>NULL</i><tr><td>532858<td><i>NULL</i><td><i>NULL</i><td><i>NULL</i><td> 林欣彤 <td> <td> <td> i00178fmn0l <td> 1049 <td> <td>25685<td> 003F2pV <td><i>NULL</i><td>TX0 <td><i>NULL</i></table>

    正则提取 td 里面的内容(含空值),要通过 https://tool.oschina.net/regex/ 测试。<td>(.+?)<只有 18 个结果,怎么提取出正确的 30 个结果
    21 条回复    2023-08-07 22:32:49 +08:00
    retanoj
        1
    retanoj  
       2023-08-07 09:10:13 +08:00
    html 不建议用正则扣
    73P2OdTjK6t29nk1
        2
    73P2OdTjK6t29nk1  
       2023-08-07 09:14:00 +08:00
    这种事交给 chatgpt 不是第一选择吗
    zpj520wzm
        3
    zpj520wzm  
       2023-08-07 09:16:15 +08:00
    td>(.+?)<
    8355
        4
    8355  
       2023-08-07 09:16:19 +08:00
    正则是效率最低的方式,标准 html 解析是最好的方案
    Great233
        5
    Great233  
       2023-08-07 09:16:21 +08:00
    td>.*?<
    这样?
    p1956
        6
    p1956  
    OP
       2023-08-07 09:16:46 +08:0
    @okaykai chatgpt 解决不了
    chnwillliu
        7
    chnwillliu  
       2023-08-07 09:16:49 +08:00 via Android
    <td>(.+?)(?=<)

    用断言,否则后面的尖括号会被吃了
    dayeye2006199
        8
    dayeye2006199  
       2023-08-07 09:16:52 +08:00 via Android
    建议做个树结构,然后框个迭代的条件过一遍就行
    cloudfox
        9
    cloudfox  
       2023-08-07 09:16:54 +08:00
    (?<=<td>)(.*?)(?=<td>)
    shiyuu
        10
    shiyuu  
       2023-08-07 09:22:53 +08:00
    chatgpt 帮你完成
    newaccount
        11
    newaccount  
       2023-08-07 09:23:19 +08:00
    <td>([^<]*)<
    p1956
        12
    p1956  
    OP
       2023-08-07 09:23:52 +08:00
    @chnwillliu 这个可以,谢谢
    newaccount
        13
    newaccount  
       2023-08-07 09:25:07 +08:00
    @newaccount 忽略我,原始数据不是标准 td 嵌套
    SuujonH
        14
    SuujonH  
       2023-08-07 09:25:18 +08:00
    善用 chatgpt ,不行就多问问

    <td>([^<]*)
    Seanfuck
        15
    Seanfuck  
       2023-08-07 09:31:54 +08:00
    3 楼 5 楼的都可以,奇怪了不能用<td>开头的
    davin
        16
    davin  
       2023-08-07 09:45:49 +08:00
    你这也不是标准的 HTML 吧,不遵循嵌套规则,结束标签呢?
    zpj520wzm
        17
    zpj520wzm  
       2023-08-07 10:19:45 +08:00
    @Seanfuck 楼主一开始的正则,后面会吞掉一个<,就匹配不了<td>开头了,间隔,所以只能匹配一半,就是 15 个。做法要么这样写,要么就是 chnwillliu 说的后向断言引用
    herozzm
        18
    herozzm  
       2023-08-07 10:20:54 +08:00
    测试正则请用: https://regex101.com/
    loveDiu4ever
        19
    loveDiu4ever  
       2023-08-07 10:57:32 +08:00
    td 里面套 td 真有人愿意给他写正则啊
    kaedeair
        20
    kaedeair  
       2023-08-07 17:21:35 +08:00
    td>(.+?)<
    为啥会漏最后一个是因为最后一个"<"把最后<td>的"<"吃了
    mikewang
        21
    mikewang  
       2023-08-07 22:32:49 +08:00
    不要使用正则表达式匹配 HTML: https://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags

    HTML 不是正则文法语言,因此该语言不能被正则表达式“正确地”解析。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     873 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 21:00 PVG 05:00 LAX 14:00 JFK 17:00
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86