如何設定REGEXP PATTERN才能取出正確資料呢?
- 帖子
- 1018
- 主題
- 15
- 精華
- 0
- 積分
- 1058
- 點名
- 0
- 作業系統
- win7 32bit
- 軟體版本
- Office 2016 64-bit
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 桃園
- 註冊時間
- 2012-5-9
- 最後登錄
- 2022-9-28
|
本帖最後由 stillfish00 於 2013-8-20 09:19 編輯
回復 3# dechiuan999
mPtn = "PCE|\d+(,\d{3})*" |
|
|
|
|
|
|
|
- 帖子
- 1018
- 主題
- 15
- 精華
- 0
- 積分
- 1058
- 點名
- 0
- 作業系統
- win7 32bit
- 軟體版本
- Office 2016 64-bit
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 桃園
- 註冊時間
- 2012-5-9
- 最後登錄
- 2022-9-28
|
回復 5# dechiuan999
,\d{3} 一逗號三數字
(,\d{3})* (一逗號三數字)出現零次或多次
因為*是用來匹配前一字元 零次或多次
這裡的 ( )* 使括號內規則匹配 零次或多次
當然小括號還有其他特殊功能。。。這裡沒用到就不多說了 |
|
|
|
|
|
|
|
- 帖子
- 1018
- 主題
- 15
- 精華
- 0
- 積分
- 1058
- 點名
- 0
- 作業系統
- win7 32bit
- 軟體版本
- Office 2016 64-bit
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 桃園
- 註冊時間
- 2012-5-9
- 最後登錄
- 2022-9-28
|
本帖最後由 stillfish00 於 2013-8-23 09:23 編輯
回復 11# dechiuan999
無空格也能匹配:
"\d+\s*元"
"\d+\s*方元" |
|
|
|
|
|
|
|
- 帖子
- 1018
- 主題
- 15
- 精華
- 0
- 積分
- 1058
- 點名
- 0
- 作業系統
- win7 32bit
- 軟體版本
- Office 2016 64-bit
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 桃園
- 註冊時間
- 2012-5-9
- 最後登錄
- 2022-9-28
|
本帖最後由 stillfish00 於 2013-8-23 09:34 編輯
回復 9# dechiuan999
相關網站
http://msdn.microsoft.com/en-us/library/1400241x(VS.85).aspx
這篇也蠻有趣的
http://technet.microsoft.com/zh-tw/magazine/2008.05.heyscriptingguy.aspx |
|
|
|
|
|
|
|
- 帖子
- 1018
- 主題
- 15
- 精華
- 0
- 積分
- 1058
- 點名
- 0
- 作業系統
- win7 32bit
- 軟體版本
- Office 2016 64-bit
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 桃園
- 註冊時間
- 2012-5-9
- 最後登錄
- 2022-9-28
|
回復 17# dechiuan999
雖說pattern的設計本來就有很多種,但你這 [,} 左右不對稱我就看不懂了。
若是考慮小數,我會改用 "PCE|\d+(,\d{3})*(\.\d+)?"
其實這主要要根據你可能的資料有哪些形式,看你要多嚴格才能夠抓的正確,
若可能的資料字串只有你寫的那些形式,寬鬆點抓用 "PCE|[0-9,.]+" 甚至用 "\S+" 也是可以的。
最好是看你的思路,由前而後,像上面要匹配小數點後而用的 (\.\d+)?
很容易就能理解成 "一個小數點後面接一個以上數字,或都沒有"
另外有些pattern是等效的,所以寫出來pattern不同也是正常的
如 \d 等同 [0-9]
+ 等同 {1,}
* 等同 {0,}
? 等同 {0,1}
\. 等同 [.]
總之先完全理解各個特殊字元的意義,再像堆積木一樣堆起來,我也沒甚麼特別的方法。 |
|
|
|
|
|
|
|