标题: [文本处理] 如何提取出一个文本中的QQ号码 [打印本页]
作者: 流氓王朝 时间: 2016-3-31 19:57 标题: 如何提取出一个文本中的QQ号码
本帖最后由 pcl_test 于 2016-4-2 15:34 编辑
我在论坛找到一个教程 代码如@echo off
(for /f "tokens=5 delims==&]" %%i in ('findstr /i "&Uin=[1-9][0-9]*[&\]]" "*.txt"') do echo %%i)>qq.txt
pause
把此代码保存为1.bat 与下面的文本保存为2.txt放在同一个文件夹下 运行1.bat 可输出qq.txt 但是为空
TXT文本如下
天天爱吃鱼
&Uin=78695
52love
&Uin=90486
kitain
&Uin=93215
苍小虎
&Uin=232209
lightair
&Uin=233167
zxwax
&Uin=277150
草 哲
&Uin=337479
风子
&Uin=353679
-浅浅风
&Uin=427157
joye
&Uin=439847
作者: CrLf 时间: 2016-3-31 20:06
长文本应只发关键部分,或放网盘
作者: pcl_test 时间: 2016-3-31 20:19
本帖最后由 pcl_test 于 2016-3-31 23:10 编辑
第三方- sed -n "s/&Uin=\([1-9][0-9]*\)/\1/p" "1.txt">"2.txt"
复制代码
作者: 流氓王朝 时间: 2016-3-31 20:33
听不懂啊 能讲明白一点吗 就是把这个代码保存成1.bat 然后运行吗
作者: ivor 时间: 2016-3-31 21:35
本帖最后由 ivor 于 2016-4-1 22:43 编辑
回复 1# 流氓王朝 - @echo off
- (for /f "tokens=1,2 delims==" %%i in ('findstr /i "&Uin=[1-9][0-9]*" "*.txt"') do echo %%j)>qq.txt
- pause
复制代码
作者: codegay 时间: 2016-4-1 01:11
- """
- python
- 2016年4月1日 01:05:09 codegay
- """
- import re
- txt=open("qq.txt").read()
- result=re.findall(r"""&Uin=(\d+)""",txt)
- print(result)
复制代码
作者: codegay 时间: 2016-4-1 01:24
本帖最后由 codegay 于 2016-4-1 01:26 编辑
- #=
- julia正则提取文本中的QQ号.jl
- 2016年3月31日 21:51:50 codegay
- 练习一下Julia的正则表达式
- =#
- txt=open(readlines,"a.txt")
- filter!(r"&Uin=(\d+)",txt)
- f=open("result.txt","w+")
- for r in txt
- write(f,match(r"&Uin=(\d+)",r).captures[1]*"\r\n")
- end
- close(f)
复制代码
作者: CrLf 时间: 2016-4-1 02:02
本帖最后由 CrLf 于 2016-4-1 02:04 编辑
hta:- @mshta http://bathome.net/s/hta/?string "type('2.txt').replace(/^(?!&Uin=\d+)/gm,'').match(/\d+$/mg)" >qq.txt
复制代码
作者: sishentibu 时间: 2016-4-1 22:39
回复 5# ivor
&Uin=[1-9][1-9]*
这段应该改为如下吧?
&Uin=[1-9][0-9]*
作者: ivor 时间: 2016-4-1 22:43
回复 9# sishentibu
这都被你发现了
作者: sishentibu 时间: 2016-4-2 11:47
回复 10# ivor
因为代码短,所以就看了下
作者: happy886rr 时间: 2016-4-2 13:51
- fr 1.txt -stdout -ric:"&Uin=" /t:""
复制代码
回复 1# 流氓王朝
作者: codegay 时间: 2016-4-2 13:58
回复 12# happy886rr
fr 默认会把不配的行也输出...超烦.
作者: happy886rr 时间: 2016-4-2 14:00
回复 13# codegay
是的,所以在加个管道findstr 纯数字
作者: codegay 时间: 2016-4-2 14:12
本帖最后由 codegay 于 2016-4-2 15:50 编辑
f的-o:"k"参数加fr替换- f -o:"k" -ric:"&Uin=(\d+)" 1.txt -stdout|fr -stdout -ric:"&Uin=" /t:""&pause
复制代码
可以省掉-stdout参数.- f -o:"k" -ric:"&Uin=(\d+)" 1.txt |fr -ric:"&Uin=" /t:""&pause
复制代码
作者: codegay 时间: 2016-4-2 14:18
默认五数字以上才都是QQ,用一个F就可以:- f -o:"k" -ric:"\d{5,}" 1.txt&pause
复制代码
匹配到uin的话,需要两层.- f -o:"k" -ric:"&Uin=(\d+)" 1.txt|f -o:"k" -ric:"\d{5,}"&pause
复制代码
作者: codegay 时间: 2016-4-2 14:21
- sed -n "s/&Uin=\(\d*\)/\1/p" "1.txt"&pause
复制代码
作者: happy886rr 时间: 2016-4-2 14:54
本帖最后由 happy886rr 于 2016-4-2 15:01 编辑
回复 17# codegay
行啊。细节都注意了。今天才知道findstr /be "[0-9]*"并不是匹配纯数字。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |