註冊
登錄
首頁
論壇版規
禁止列表
說明
地圖
數位書香
私人消息 (0)
公共消息 (0)
論壇任務 (0)
系統消息 (0)
好友消息 (0)
帖子消息 (0)
麻辣家族討論版版
»
Excel程式區
» 請問如何取出REGEXP指定的空格之後字串呢?
返回列表
下一主題
上一主題
發帖
[發問]
請問如何取出REGEXP指定的空格之後字串呢?
dechiuan999
發短消息
加為好友
dechiuan999
當前離線
UID
1016
帖子
231
主題
55
精華
0
積分
293
金錢
293
點名
0
作業系統
winxp
軟體版本
office2003
閱讀權限
20
性別
男
來自
KEELUNG
在線時間
41 小時
註冊時間
2010-7-24
最後登錄
2018-8-28
中學生
帖子
231
主題
55
精華
0
積分
293
點名
0
作業系統
winxp
軟體版本
office2003
閱讀權限
20
性別
男
來自
KEELUNG
註冊時間
2010-7-24
最後登錄
2018-8-28
1
#
跳轉到
»
正序看帖
打印
字體大小:
t
T
發表於 2015-3-5 16:49
|
只看該作者
[發問]
請問如何取出REGEXP指定的空格之後字串呢?
各位大大好:
小弟想利用regexp來取出下列字串
,而指定字串唯一的共同點是
第三個空白字串為起點並
取出空白字串後的所有字串。
小弟引用下列pattern 卻無法
匹對成功。請問應如何修正pattern
設定呢?
mPtn = "\s{3,3}.*"
A 欄字串內容如下:
A1→aa babcdefg cc dd ee ff gg hh ii
A2→aa bb cdefc dd ee ff gg hh
A3→aijklma bb cc dd ee ff
A4→aba bb cc dd ee ff gg
B欄為取出內容如下:
B1→dd ee ff gg hh ii
B2→dd ee ff gg hh
B3→dd ee ff
B4→dd ee ff gg
謝謝各位大大!
樓主熱帖
家裡電腦網路無法登入麻辣家族
對C語言如何應用的疑惑
如何區別NumberFormat及NumberFormatLocal使
如何將A5紙張格式一次列印於A4紙張直接產生
如何在指定的定義名稱內指定範圍加總呢?
為何Textbox的Setfocus無法發揮功能呢?
如何讓Listbox可一併顯示工作表的表頭呢?
為何執行excel vba之後信件仍停在outlook寄
如何將表單內的multipage增設物件類別呢?
如何在SQL語法中引用REPLACE 取代雙引號呢?
收藏
分享
dechiuan999
發短消息
加為好友
dechiuan999
當前離線
UID
1016
帖子
231
主題
55
精華
0
積分
293
金錢
293
點名
0
作業系統
winxp
軟體版本
office2003
閱讀權限
20
性別
男
來自
KEELUNG
在線時間
41 小時
註冊時間
2010-7-24
最後登錄
2018-8-28
中學生
帖子
231
主題
55
精華
0
積分
293
點名
0
作業系統
winxp
軟體版本
office2003
閱讀權限
20
性別
男
來自
KEELUNG
註冊時間
2010-7-24
最後登錄
2018-8-28
7
#
發表於 2015-3-6 19:45
|
只看該作者
回復
6#
stillfish00
大大您好:
小弟已測試成功了。
小弟深知對於regexp處理文字,
有很大的POWER能力。
可惜小弟卻常常使不上力。
很感恩二位大大!
TOP
stillfish00
發短消息
加為好友
stillfish00
當前離線
UID
9276
帖子
1018
主題
15
精華
0
積分
1058
金錢
1058
點名
0
作業系統
win7 32bit
軟體版本
Office 2016 64-bit
閱讀權限
50
性別
男
來自
桃園
在線時間
1141 小時
註冊時間
2012-5-9
最後登錄
2022-9-28
大學生
帖子
1018
主題
15
精華
0
積分
1058
點名
0
作業系統
win7 32bit
軟體版本
Office 2016 64-bit
閱讀權限
50
性別
男
來自
桃園
註冊時間
2012-5-9
最後登錄
2022-9-28
6
#
發表於 2015-3-6 18:37
|
只看該作者
本帖最後由 stillfish00 於 2015-3-6 18:46 編輯
回復
1#
dechiuan999
兩種都可以
Sub TestAA()
Dim oReg As Object
s = "aa babcdefg cc dd ee ff gg hh ii"
' s = "aa bb cdefc dd ee ff gg hh"
' s = "aijklma bb cc dd ee ff"
' s = "aba bb cc dd ee ff gg"
Set oReg = CreateObject("vbscript.regexp")
With oReg
.Pattern = "^\S+\s+\S+\s+\S+\s+(.*)"
Debug.Print .Replace(s, "$1") '取代match pattern的部分成為 pattern 中第一個括號內字串
.Pattern = "^\S+\s+\S+\s+\S+\s+" '同 "^(\S+\s+){3}"
Debug.Print .Replace(s, "") '抓出開頭3個word , 將match pattern的部分用""取代掉
End With
End Sub
複製代碼
表達不清、題意不明確、沒附檔案格式、沒有討論問題的態度~~~~~~以上愛莫能助。
TOP
dechiuan999
發短消息
加為好友
dechiuan999
當前離線
UID
1016
帖子
231
主題
55
精華
0
積分
293
金錢
293
點名
0
作業系統
winxp
軟體版本
office2003
閱讀權限
20
性別
男
來自
KEELUNG
在線時間
41 小時
註冊時間
2010-7-24
最後登錄
2018-8-28
中學生
帖子
231
主題
55
精華
0
積分
293
點名
0
作業系統
winxp
軟體版本
office2003
閱讀權限
20
性別
男
來自
KEELUNG
註冊時間
2010-7-24
最後登錄
2018-8-28
5
#
發表於 2015-3-6 17:00
|
只看該作者
回復
4#
diolin
謝謝大大!
小弟引用大大提供的方式
在replcace還是未能成功。
小弟目前對regexp仍在剛起步。
可否請大大提供小弟一個完整範例
供小弟學習否?
感恩大大!
TOP
diolin
發短消息
加為好友
diolin
當前離線
UID
7065
帖子
65
主題
0
精華
0
積分
64
金錢
64
點名
0
作業系統
Windows XP
軟體版本
Office 2003
閱讀權限
20
在線時間
22 小時
註冊時間
2011-11-10
最後登錄
2019-2-27
中學生
帖子
65
主題
0
精華
0
積分
64
點名
0
作業系統
Windows XP
軟體版本
Office 2003
閱讀權限
20
註冊時間
2011-11-10
最後登錄
2019-2-27
4
#
發表於 2015-3-6 13:43
|
只看該作者
轉個彎
tmp=.Execute(A1).Item(0).SubMatches(0)
mRegexpReplace=Replace(mStr, tmp, mRepStr)
TOP
dechiuan999
發短消息
加為好友
dechiuan999
當前離線
UID
1016
帖子
231
主題
55
精華
0
積分
293
金錢
293
點名
0
作業系統
winxp
軟體版本
office2003
閱讀權限
20
性別
男
來自
KEELUNG
在線時間
41 小時
註冊時間
2010-7-24
最後登錄
2018-8-28
中學生
帖子
231
主題
55
精華
0
積分
293
點名
0
作業系統
winxp
軟體版本
office2003
閱讀權限
20
性別
男
來自
KEELUNG
註冊時間
2010-7-24
最後登錄
2018-8-28
3
#
發表於 2015-3-6 10:56
|
只看該作者
本帖最後由 dechiuan999 於 2015-3-6 10:59 編輯
回復
2#
diolin
大大您好:
謝謝大大的相助。
因無法利用EXCEL資料剖析
來分割字串;因而改用REGEXP
來分割字串。
依大大的方式,小弟無法將A欄
已取出的字串再利用REGEXP REPLACE
來清除。
語法如下:
Sub mRegRepStr()
Dim mPtn As String
Dim mStr As String
Dim mRepStr As String
Dim mSht As Worksheet
Dim mRng As Range, mRng1 As Range
Application.ScreenUpdating = False
mPtn = "\s+\S+\s+\S+\s+(.*)"
mRepStr = ""
Set mSht = Worksheets("new")
With mSht
Set mRng1 = .Range("a1", .Range("a" & .Rows.Count).End(xlUp))
For Each mRng In mRng1
mStr = mRng.Value
mRng.Value = mRegexpReplace(mPtn, mStr, mRepStr)
Next
End With
Set mSht = Nothing
Set mRng = Nothing
Set mRng1 = Nothing
End Sub
Function mRegexpReplace(mPtn As String, mStr As String, mRepStr As String)
'Regexp Replace
Dim mRegReplace As New VBScript_RegExp_55.RegExp
Set mRegReplace = New VBScript_RegExp_55.RegExp
With mRegReplace
.Global = True
.IgnoreCase = True
.Pattern = mPtn
mRegexpReplace = .Replace(mStr, mRepStr)
End With
Set mRegReplace = Nothing
End Function
複製代碼
TOP
diolin
發短消息
加為好友
diolin
當前離線
UID
7065
帖子
65
主題
0
精華
0
積分
64
金錢
64
點名
0
作業系統
Windows XP
軟體版本
Office 2003
閱讀權限
20
在線時間
22 小時
註冊時間
2011-11-10
最後登錄
2019-2-27
中學生
帖子
65
主題
0
精華
0
積分
64
點名
0
作業系統
Windows XP
軟體版本
Office 2003
閱讀權限
20
註冊時間
2011-11-10
最後登錄
2019-2-27
2
#
發表於 2015-3-6 09:56
|
只看該作者
試試看
Pattern = "\s+\S+\s+\S+\s+(.*)"
B1=Execute(A1).Item(0).SubMatches(0)
TOP
靜思自在 :
為自己找藉口的人永遠不會進步。
返回列表
下一主題
上一主題
Excelㄧ般區
一般電腦軟體討論
VB 與 VB.Net
進階應用專區
新手測試
EXCEL專屬討論區
Excelㄧ般區
Excel程式區
進階應用專區
OFFICE 系列
Word
PowerPoint
Access
Office不分區
程式語言
VB 與 VB.Net
C 與 C#
Java 與 J#
程式設計不分區
資料庫
ORACLE
My SQL
MS SQL
網頁設計
ASP 與 ASP.NET
PHP
PHP+MySQL 入門實作
JavaScript
FLASH / ActionScript
HTM/ HTML/ CSS
網頁設計不分區
電腦與作業系統
電腦各種硬體討論
一般電腦軟體討論
論壇事務
管理公告
投訴反映
新手測試
愛 • 生活
公益佈告欄
生活與感動
[收藏此主題]
[關注此主題的新回復]
[通過 QQ、MSN 分享給朋友]
申請友情鏈接
Facebook粉絲