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过程
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