正则问题,来看看吧

2023-08-07 09:01:52 +08:00
 p1956
<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 个结果
2087 次点击
所在节点    程序员
21 条回复
retanoj
2023-08-07 09:10:13 +08:00
html 不建议用正则扣
73P2OdTjK6t29nk1
2023-08-07 09:14:00 +08:00
这种事交给 chatgpt 不是第一选择吗
zpj520wzm
2023-08-07 09:16:15 +08:00
td>(.+?)<
8355
2023-08-07 09:16:19 +08:00
正则是效率最低的方式,标准 html 解析是最好的方案
Great233
2023-08-07 09:16:21 +08:00
td>.*?<
这样?
p1956
2023-08-07 09:16:46 +08:00
@okaykai chatgpt 解决不了
chnwillliu
2023-08-07 09:16:49 +08:00
<td>(.+?)(?=<)

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

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/962911

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX