注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

chunwaihome 的博客

 
 
 

日志

 
 

Regular Expression  

2010-03-24 09:53:50|  分类: PowerPro |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

你亦可以用var[n]語法去查閱轉變量的字元,var[n,m]表示變量n和m之間的字元,而n和m必須是一個整個,而字符串的第一個序號是0。如果n是負號的話,則表示它的序號是length(var)-1,因此-1表示字符串的最位一個字元。

您可以用以下的語法:

var[n] = expr

取代第n個序號的expr字串符。

例如

local var="abcde"
var[0]   // yields "a"
var[2,3]   // yields "cd"
var[-5,-2]   // yields "abcd"  
var[3]="*" // sets var to abc*e
var[3]="123" // sets var to abc123e
var[1,4]="" // sets var to "a"

如果var[expr]

 你亦可以用replacechars去代替以上的命令

Powerpro本身提供了基本的Regular Expression操作像 String Matching  和 Replacement , 而Regex Plugin除了提供以上兩項功能外,還支援 PCRE Library (Perl - Compatible Regular Expressions)

Regular Expression用了 backslash ( \ ) 符號在字串的操作中, 這將會和Powerpro 的默認的Escape character 有所沖突,因此,您需要在操作的字串中加上?"string"

Matching

X = var[?"RegExp"]

X變量會得出正則表所配合的值,如果多過一個字串符合的話,它會是每一行顯示一個配合值。如果沒有任何字串符合的話,X變量回返值是 " " , 例如

local alpha = "abracadabra"
lines = alpha[?"a."]              ; a後面的一點表示
匹配除换行符以外的任意字符


 Lines回返是 "ab\nac\nad\nab" ,\n表示回車符,可能這樣寫大家會比較容易明白,

ab

ac

ad

ab

在默認的情況,powerpro是用" \n " 回車符作分隔(Separator) , 但你可以用 Exec SetRegex("sep=c") 命令設定其他的符號作為separator。如果您只想顯示第一個匹配的字串,你可以在Regex前加上 (?#1) 符號。因此alpha["(?#1)a.")  將會得出 "ab" 。

Matching亦可以應用在任何的Expression中,例如

("abra"++remove("cadabra22", -2))[?"a."]

相等於             //remove("cadabra22", -2))表示刪除最後兩個字元

("abracadabra")[?"a."]           //("abracadabra") 在此你可以選擇不加括號

你也可以用Regex plugin的 Match Matchg 命令顯示匹配的字串,例如

  • match(str, pattern)            

 match("abracadabra",?"a.")        //回返匹配的第一個字串  "ab"

 

  •  matchg(str, pattern)  

matchg("abracadabra",?"a.")           //回返所有匹配的字串 "abacadab"

 

  • matchg(str, pattern, "\\0 ")  

matchg("abracadabra",?"a.",\\0)     //回返所有匹配的字串各字串間用空白鍵分隔 "ab ac ad ab"

Replacing

The statement
var[?"RegExp"] = ?"str"

用"str"取代所有匹配的字串,你也可以用 " " 來代替?"str",表示刪除所有匹配的字串。例如

local alpha = "abracadabra"

alpha[?"a."] = "123"                  ;123會取代"ab" 、"ac"、"ad"、"ab"

 
alpha 回返值是123r123123123ra, 為了只取代第一個匹配的字串,將Spcial Comment (?#1)放在

regex前面。

local alpha = "abracadabra"

alpha[?"(?#1)a."] = "123"   

這次alpha 回返值是123racadabra

 

你也可以用Regex plugin的 replace 和 replaceg 命令取代匹配的字串,例如

  • replace(str, pattern, repl)  

x = replace("abracadabra","a.","123")          //注意在命令中[?"a."] 需要寫成"a."

取代首個匹配的字串, X 變量的回返值是123racadabra

  • replaceg(str, pattern, repl)  

取代所有匹配的字串, X 變量的回返值是123r123123123ra

replaceg("abracadabra","a.","123")         

 

  • str = str.replaceg(pattern, repl) 

str = "abracadabra"

str = str.replaceg ("a.",123)

win.debug(str)

str變量的回返值是123r123123123ra

  • str .= replaceg(pattern, repl)  

str = "abracadabra"

str .= replaceg ("a.",123)         //這次取用了 " .= " operator

win.debug(str)

str變量的回返值是123r123123123ra

  评论这张
 
阅读(556)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017