返回列表 上一主題 發帖

如何設定REGEXP PATTERN才能取出正確資料呢?

本帖最後由 stillfish00 於 2013-8-20 09:19 編輯

回復 3# dechiuan999
mPtn = "PCE|\d+(,\d{3})*"

TOP

回復 5# dechiuan999
,\d{3}        一逗號三數字
(,\d{3})*   (一逗號三數字)出現零次或多次

因為*是用來匹配前一字元 零次或多次
這裡的 ( )* 使括號內規則匹配 零次或多次

當然小括號還有其他特殊功能。。。這裡沒用到就不多說了

TOP

本帖最後由 stillfish00 於 2013-8-23 09:23 編輯

回復 11# dechiuan999
無空格也能匹配:
"\d+\s*元"
"\d+\s*方元"

TOP

本帖最後由 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

TOP

回復 17# dechiuan999

雖說pattern的設計本來就有很多種,但你這 [,}  左右不對稱我就看不懂了。

若是考慮小數,我會改用 "PCE|\d+(,\d{3})*(\.\d+)?"
其實這主要要根據你可能的資料有哪些形式,看你要多嚴格才能夠抓的正確,
若可能的資料字串只有你寫的那些形式,寬鬆點抓用 "PCE|[0-9,.]+" 甚至用 "\S+" 也是可以的。

最好是看你的思路,由前而後,像上面要匹配小數點後而用的 (\.\d+)?
很容易就能理解成 "一個小數點後面接一個以上數字,或都沒有"

另外有些pattern是等效的,所以寫出來pattern不同也是正常的
如    \d   等同  [0-9]
        +    等同  {1,}
        *     等同  {0,}
        ?     等同  {0,1}
        \.    等同  [.]

總之先完全理解各個特殊字元的意義,再像堆積木一樣堆起來,我也沒甚麼特別的方法。

TOP

        靜思自在 : 有時當思無時苦,好天要積雨來糧。
返回列表 上一主題