舉例比如如下(實際會有十幾萬行).
用vbcrlf先拆分成陣列我會, 然后回圈用正則提取每個陣列成員里剛好是8位的數字(8個連續都是數字),要怎么寫呢? (首位不會是0). 多謝!
13254815.zip
13266389.zip
.zip13307259
40245707.zip
的13689101.zip
.zip13689148
13066677.zip
13676976.zip
的13509642_間里的簡史的.zip
13619150_高等數學習南 下冊 同濟·第7版.zip
的13628123_中國理藍皮書 2014.zip
《飾計實體教程》_13688619.zip
自己寫了個不對:太菜了.
Private Sub Command84_Click()
Dim ss As String
ss = Clipboard.GetText
Text15 = quss(ss)
End Sub
Function quss(oo As String)
Set regex3 = CreateObject("VBScript.RegExp")
regex3.IgnoreCase = True
regex3.Global = True
regex3.MultiLine = False
regex3.Pattern = "^[1-9]\d{7}$"
Set Matches = regex3.Execute(oo)
For Each Match In Matches
quss = quss & Match.SubMatches(0)
Next
End Function
或者emeditor之類有沒辦法用正則之類把這些數字直接提取出來呢?
uj5u.com熱心網友回復:
難道是這個?[1-9]{8}
uj5u.com熱心網友回復:
用這個就行:[1-9]\d{7}如果要嚴格點用這個:(?!:\d)[1-9]\d{7}(?!:\d)
表示7位數數字前后都不為數字
uj5u.com熱心網友回復:
樓上大俠的正則對. 但是我不會寫代碼, 不知道怎么提取.搜了個js代碼, 可以用Emeditor實作, 但是每次要輸入正則, 我想它直接執行, 不知怎么改? 我把原代碼的var _regex=prompt("本程式用來提取正則運算式匹配的字串,請輸入正則運算式","[1-9]\d{7}");改寫成var _regex=[1-9]\d{7}; 它報錯說"無效字符"
有會js的大俠能幫指點下嗎? 非常感謝!
/**
* 根據輸入的正則運算式,提取與之匹配的字串,并新建一個檔案顯示所有匹配的字串,
* 顯示時每個匹配項占一行
*
* @author Guapo
* @version v1.0
*/
getText();
function getText()
{
// var _regex=prompt("本程式用來提取正則運算式匹配的字串,請輸入正則運算式","[1-9]\d{7}");
var _regex=[1-9]\d{7};
var regex=new RegExp(_regex,"gim");
document.selection.SelectAll();
var textInCurrentDocument=document.selection.Text;
var matchResultArray=textInCurrentDocument.match(regex);
if(matchResultArray)
{
var len=matchResultArray.length;
editor.NewFile();
for(var i=0;i<len;i++)
{
document.writeln(matchResultArray[i]);
}
}
else
{
alert("沒有找到匹配的字串");
}
}
uj5u.com熱心網友回復:
'此代碼由“正則測驗工具 v1.1.43”自動生成,請直接呼叫TestReg程序Private Sub TestReg()
Dim strData As String
Dim reg As Object
Dim matchs As Object, i As Integer, j As Integer
strData = "13254815.zip" & vbCrLf & _
"13266389.zip" & vbCrLf & _
".zip13307259" & vbCrLf & _
"40245707.zip" & vbCrLf & _
"的13689101.zip" & vbCrLf & _
".zip13689148" & vbCrLf & _
"13066677.zip" & vbCrLf & _
"13676976.zip" & vbCrLf & _
"的13509642_間里的簡史的.zip" & vbCrLf & _
"13619150_高等數學習南 下冊 同濟·第7版.zip" & vbCrLf & _
"的13628123_中國理藍皮書 2014.zip" & vbCrLf & _
"《飾計實體教程》_13688619.zip"
Set reg = CreateObject("vbscript.regExp")
reg.Global = True
reg.IgnoreCase = True
reg.MultiLine = True
reg.Pattern = "(?!:\d)[1-9]\d{7}(?!:\d)"
Set matchs = reg.Execute(strData)
For i = 0 To matchs.Count - 1
Debug.Print i + 1 & "." & matchs(i)
For j = 0 To matchs(i).SubMatches.Count - 1
Debug.Print "(" & j + 1 & ")." & matchs(i).SubMatches(j) & " ";
Next
If matchs(i).SubMatches.Count > 0 Then Debug.Print
Next
End Sub

推薦用這個工具,在表單空白處快速3擊即可生成vb6代碼,復制即可運行。介紹地址:
http://blog.csdn.net/sysdzw/article/details/6141844
uj5u.com熱心網友回復:
好像尾部是數字也會提取到呢
uj5u.com熱心網友回復:
樓主沒說尾部是數字不可以啊,他只要8位數的uj5u.com熱心網友回復:
正好是8位數的意思就是比如不是9位數也不是10位數……轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/54289.html
標籤:VB基礎類
上一篇:一個算是比較難的文本讀取和處理問題,是不是涉及到了ASCCII?求大神支招
下一篇:vba中的矩陣逆運算
