返回列表 上一主題 發帖

[發問] 數字與數字中如果有空格 要如何取代或刪除呢?

回復 5# 小俠客
參考吧
  1. Sub Test()
  2.     Dim x, oRegexp As Object: Set oRegexp = CreateObject("vbscript.regexp")
  3.     With oRegexp
  4.         .Pattern = "^\d{1,2}[)\.]\s.*"
  5.         
  6.         For Each x In Array("1) 陳大文", "32. 注意事項", "123) 其他")
  7.             Debug.Print x, .Test(x)
  8.         Next
  9.     End With
  10. End Sub
複製代碼
1) 陳大文   True
32. 注意事項 True
123) 其他   False
表達不清、題意不明確、沒附檔案格式、沒有討論問題的態度~~~~~~以上愛莫能助。

TOP

回復 9# 小俠客
^ = 匹配字串開頭
\d{1,2} = 是指前面的 \d出現一次到兩次
        另外常用簡化寫法
        \d? = \d{0,1}
        \d+ = \d{1,}
        \d* = \d{0,}

[)\.] = 是「)」或是「.」單一字元
        如果這個字元的匹配可有可無(出現0次到1次),
        可以在後面加問號
        [)\.]? = [)\.]{0,1}

最後的 .*
    .才是表示任意字元  *表示出現0次到任意多次
    我沒有特別去匹配中文字,要匹配正體中文應該是[\u4e00-\u90a5]

若依你的條件:
1) 以一個或兩個數字作開始,包含中國數字一二三四五六七八九十
2) 數字後會以「)」、「.」作分隔(有時候是沒有)
3) 之後包含了一空格 (必定一空格)
4) 之後接正體中文 (假設至少一中文字)

可寫成
^[0-9一二三四五六七八九十]{1,2}[)\.]?\s[\u4e00-\u90a5]+"
表達不清、題意不明確、沒附檔案格式、沒有討論問題的態度~~~~~~以上愛莫能助。

TOP

回復 11# 小俠客
這個要解釋真的不好解釋...
我是會這樣抓啦,你參考看看:
  1. Sub Test()
  2.     Dim oReg: Set oReg = CreateObject("vbscript.regexp")
  3.     Dim x, oMatch
  4.     Const EX1 = "1111 22222 3333年 44444年 abc5555 abc6666年 abc77777 abc88888年"
  5.     With oReg
  6.         .Pattern = "(?:\b|\D)(\d{4})(?=年|\b)"
  7.         .Global = True
  8.         Set oMatch = .Execute(EX1)
  9.         For Each x In oMatch
  10.             Debug.Print "x=" & x, "x.submatches(0)=" & x.submatches(0)
  11.         Next
  12.     End With
  13. End Sub
複製代碼
輸出會是這樣,你好好體會一下
  1. x=1111     x.submatches(0)=1111
  2. x= 3333     x.submatches(0)=3333
  3. x=c5555    x.submatches(0)=5555
  4. x=c6666    x.submatches(0)=6666
複製代碼
表達不清、題意不明確、沒附檔案格式、沒有討論問題的態度~~~~~~以上愛莫能助。

TOP

        靜思自在 : 原諒別人就是善待自己。
返回列表 上一主題