1
geelaw 2018-07-20 17:20:07 +08:00
太长不看,但我觉得你可以把
(\s.*)* 改成 (\s.*)*? 试试 |
2
yesterdaysun 2018-07-20 17:23:53 +08:00 1
硬上了一个,仅供参考
\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2} 苹果\(\d+\)[\r\n]+[\s\S]*?[\r\n]{2} |
4
jin6220 OP @yesterdaysun 哇 果然是大神 我废了半个小时吭哧吭哧 才编出了那个代码 看来还要提高水平。
|
5
JCZ2MkKb5S8ZX9pq 2018-07-20 17:30:59 +08:00
一楼说得对 凑合用吧
^.*苹果\(1234567\)(\s.*)*?(?=[\d\-\s\:]{20}) |
6
jin6220 OP @yesterdaysun 大神啊 这话说的后面的 怎么样没有匹配出来呐
上面对话也是我编的,实际某个人发言格式可能很复杂 行与行之间还有空行。 我的思路是比管你的发言内容是什么,我只匹配两个时间里面的内容。 |
7
cncqw 2018-07-20 17:32:04 +08:00 1
太长不看
20[\d-]{8}\s[\d:]{7,8}\s+[^\n]+(?:\d{5,11}|@\w+\.[comnet]{2,3})\) |
8
jin6220 OP @yesterdaysun 不好意思啊 刚才用的本地软件测试的,我用那个网站测试了。实际结果是匹配出来的,我要好好研究下你的代码。
|
9
zihuyishi 2018-07-20 17:43:13 +08:00
感觉这里没必要用正则额....
|
10
ETiV 2018-07-20 17:44:44 +08:00
这样?
苹果\(\d+\)\s+(^.*$\n)+?^$ |
11
jin6220 OP @ETiV 包括前面的时间,这样呢,红框那些发言,
http://p3.cdn.img9.top/ipfs/QmebK5JAqyGBJsZNNaCa4svtBirfeSxhbcVrenStL8yVVR?3.jpg |
12
ETiV 2018-07-20 18:01:22 +08:00
包括时间那么简单你自己写啦(或者用 2 楼的,「苹果」之前那一串)
|
13
FanWall 2018-07-20 18:03:49 +08:00 via Android
```
20\d{2}\-\d{2}\-\d{2} \d{2}:\d{2}:\d{2} 苹果\([^\)]+\) \n(((?!20\d{2}\-\d{2}\-\d{2} \d{2}:\d{2}:\d{2} ).)+) ``` 考虑一下不以两个\n 结束以及 QQ 号未必是纯数字的对话,选择单行模式,/gs |
14
LudwigWS 2018-07-20 18:04:46 +08:00
问题是如何导出聊天记录。。
|
16
future0906 2018-07-20 19:18:21 +08:00
其实你做的这些都是徒劳的,如果人在说话的过程中贴了聊天记录,你怎么提取?
|
17
gam2046 2018-07-20 20:52:09 +08:00
(?<=苹果.+\n)[\s\S]*?(?=\d{4}-\d{2}-\d{2}|$)
要不要试试看?但依旧觉得,这个不应该用正则来做,最多正则选取出来每个人说的话,然后用程序根据每个人说的话,再做二次筛选会灵活很多 |
18
jin6220 OP @future0906 哈哈 确实 只能匹配大概正确的 。
如果别人把含有他的多个聊天记录贴上来,只能把苹果每次发言的最后一个时间记录下来,如果下次他的发言时间大于上述时间,再用正则匹配。 |
19
jin6220 OP @gam2046 我也不太懂啊 就是把群聊天消息导出到 txt 格式 到时候用过正则弄出特定用户的发言,您觉得是怎么做好呢。另外,你这个正则 好像不能匹配苹果发言。
|
20
gam2046 2018-07-20 21:13:27 +08:00
@jin6220 可变长度断言,JavaScript 并不支持而已。这个特性看正则引擎的。不要断言就直接改用捕获分组咯,不过是速度会略慢一点,不过你这个用途也无所谓,根本看不出来。
(苹果.+\n)([\s\S]*?)(\d{4}-\d{2}-\d{2}|$) 第二个分组的内容,就是你要的东西。 |
21
frostming 2018-07-20 22:19:47 +08:00
把(\s.*)*换成:' *\n([\s\S]*?)'
|
23
zhzer 2018-07-22 21:48:03 +08:00
这种情况,就分步骤正则嘛
简单的逻辑加上正则,比精心编排的正则省时省力 |