vb提取文本中的身份证号码解决方案
vb提取文本中的身份证号码
txt文件内容格式如下
"0100000000002013030003","姓名","","1","1963/10/13","1963/10/13","37062019631013301X","110108","地址地址在地址地址地址","110108",
"0201000009992012060001","姓名","","","1","1978/01/08","1978/01/08","120104197801086036","110106","地址地址在地址地址地址","11",
"1105280009992006030003",,"姓名","1","1978/01/08","1978/01/08","41280119770827231X","110106","地址地址在地址地址地址","11",
"1105280009992006030002",,"姓名","1","1978/01/08","1978/01/08","350181197808116571","110106","地址地址在地址地址地址","11",
"1105280009992006060011",,"姓名","1","1978/01/08","1978/01/08","350181198306105877","110106","地址地址在地址地址地址","11",
"1105280009992006060012",,"姓名","","","1","1978/01/08","1978/01/08","42070319840510277X","110106","地址地址在地址地址地址","11",
"1105280009992006090015",,"姓名","","","1","1978/01/08","1978/01/08","341623198605018311","110106","地址地址在地址地址地址","11",
"1105280009992006110018",,"姓名","1","1978/01/08","1978/01/08","410305690215031","110106","地址地址在地址地址地址","11",
"1105280009992006120019",,"姓名","1","1978/01/08","1978/01/08","410527700303295","110106","地址地址在地址地址地址","11",
.........
一行一条数据,总共有将近20W行数据
身份证号码有15位 18位(虽然有逗号分隔,但是号码位置不固定的,分隔截取是完全拿不到的)
vb正则表达式如何能取出身份证号码?
或者有其他什么办法 VB代码
------解决方案--------------------
split后找长度为15或18,以数字开头,笨法还是可以胜任的.....
------解决方案--------------------
\d{15}
------解决方案--------------------
\d{18}
------解决方案--------------------
'此代码由“正则测试工具 v1.1.35”自动生成,请直接调用TestReg过程
1.37062019631013301X
2.120104197801086036
3.41280119770827231X
4.350181197808116571
5.350181198306105877
6.42070319840510277X
7.341623198605018311
8.410305690215031
9.410527700303295
txt文件内容格式如下
"0100000000002013030003","姓名","","1","1963/10/13","1963/10/13","37062019631013301X","110108","地址地址在地址地址地址","110108",
"0201000009992012060001","姓名","","","1","1978/01/08","1978/01/08","120104197801086036","110106","地址地址在地址地址地址","11",
"1105280009992006030003",,"姓名","1","1978/01/08","1978/01/08","41280119770827231X","110106","地址地址在地址地址地址","11",
"1105280009992006030002",,"姓名","1","1978/01/08","1978/01/08","350181197808116571","110106","地址地址在地址地址地址","11",
"1105280009992006060011",,"姓名","1","1978/01/08","1978/01/08","350181198306105877","110106","地址地址在地址地址地址","11",
"1105280009992006060012",,"姓名","","","1","1978/01/08","1978/01/08","42070319840510277X","110106","地址地址在地址地址地址","11",
"1105280009992006090015",,"姓名","","","1","1978/01/08","1978/01/08","341623198605018311","110106","地址地址在地址地址地址","11",
"1105280009992006110018",,"姓名","1","1978/01/08","1978/01/08","410305690215031","110106","地址地址在地址地址地址","11",
"1105280009992006120019",,"姓名","1","1978/01/08","1978/01/08","410527700303295","110106","地址地址在地址地址地址","11",
.........
一行一条数据,总共有将近20W行数据
身份证号码有15位 18位(虽然有逗号分隔,但是号码位置不固定的,分隔截取是完全拿不到的)
vb正则表达式如何能取出身份证号码?
或者有其他什么办法 VB代码
------解决方案--------------------
split后找长度为15或18,以数字开头,笨法还是可以胜任的.....
------解决方案--------------------
\d{15}
------解决方案--------------------
\d{18}
------解决方案--------------------
'此代码由“正则测试工具 v1.1.35”自动生成,请直接调用TestReg过程
Private Sub TestReg()
Dim strData As String
Dim reg As Object
Dim matchs As Object, match As Object
strData = """0100000000002013030003"",""姓名"","""",""1"",""1963/10/13"",""1963/10/13"",""37062019631013301X"",""110108"",""地址地址在地址地址地址"",""110108""," & vbCrLf & _
"""0201000009992012060001"",""姓名"","""","""",""1"",""1978/01/08"",""1978/01/08"",""120104197801086036"",""110106"",""地址地址在地址地址地址"",""11"","
Set reg = CreateObject("vbscript.regExp")
reg.Global = True
reg.IgnoreCase = True
reg.MultiLine = True
reg.Pattern = """([\dX]{15}
------解决方案--------------------
[\dX]{18})"""
Set matchs = reg.Execute(strData)
For Each match In matchs
'Debug.Print match.Value
Debug.Print match.SubMatches(0)
Next
End Sub
1.37062019631013301X
2.120104197801086036
3.41280119770827231X
4.350181197808116571
5.350181198306105877
6.42070319840510277X
7.341623198605018311
8.410305690215031
9.410527700303295