close
Pattern Matching
樣式可以包含數種萬用字元的特殊字元
* 符合任意數量(包含0個)的字元或空白
? 符合單一個字元
%d 符合任意數量的數字(0-9)
%n 符合以+或-開頭的數字
%w 符合任意數量的英文字母(a-z) (也就是一個單字)
%a 符合任意數量的英數字(a-z,0-9)
%s 符合任意數量的空白字元(空格,tab)
%x 符合任意數量的非空白字元
%y 符合任意數量的非空白字元(跟%x一樣但也符合行首跟行尾)
%p 符合任何標點符號
%q 符合任何標點符號(跟%p一樣但也符合行首跟行尾)
%t 符合方向指令
%e 符合ANSI樣式的ESC字元
[range] 符合任意數量列在range的字元
^ 強制pattern符合在行首
$ 強制pattern符合在行尾
(pattern) 將符合的pattern存在參數%1到%99
~ 防止下一個字元被解釋為萬用字元,符合特殊字元時需要
~~ 符合~字元
{val1|val2|val3|...} 符合任何給定的字串,裡面不能再使用萬用字元
@variable 用給定的list或record符合字串
{^string} 不符合給定的字串
&nn 符合恰好nn字元
&VarName 將符合的字串值設給給定的變數(下面有更多資訊)
把pattern的任何部分存到%1..%99參數,用括號()包起來。
給定一個範圍(range),可以列出所有字元[abc]或用範圍[a-c]。
pattern裡要使用萬用字元本身的話,前面加一個引述字元(~),例如樣式~[test~]會解釋為符合[test],而不是解釋為範圍字元。
注意引述字元可以在Preferences裡更改。
要符合空行,使用樣式$。
要符合多數行,中間放入$來符合各行的界限。
pattern裡也可以包括變數,在執行符合測試前,會替換為變數的值
使用 &VarName
&VarName的語法要多加解釋,它用在直接把符合的樣式存入變數,例如,如果你有個trigger
#TRIGGER {You get &Gold coins}
然後MUD顯示
You get 1000 coins
則數值1000自動地放入@Gold變數,不用你更多的動作。
&VarName預設使用*萬用字元,要使用不同的萬用字元,在&字元後插入萬用字元。
在上面的例子,如果MUD顯示
You get many coins
@Gold變數會填入字串"many",要限制trigger只符合數字,把trigger改為
#TRIGGER {You get &%dGold coins}
現在"You get many coins" 不符合這個觸發了。你可以使用任何萬用字元,也可以用方括號[]來定義你自己的萬用範圍。
有時候你要擷取的字串後面有一些英文字。要界定變數名稱,把變數名稱放到大括號{}裡,例如要抓取
You have 1000gp
你可以使用trigger
#TRIGGER {You have &%d{Gold}gp}
只會符合數字而且正確地設@Gold為1000
&VarName語法也可以使用在資料庫紀錄,如果你有一個紀錄變數@char想要設定Gold欄位,
你可以使用觸發:
#TRIGGER {You get &char.Gold coins}
要在資料庫的第7個紀錄設定Gold欄位,你會
#TRIGGER {You get &7.Gold coins}
要設定當前紀錄的Gold欄位,省略紀錄號碼
#TRIGGER {You get &.Gold coins}
這種合併資料庫的語法,提供強大的方法抓取MUD的資訊
注意:用&VarName語法符合的字串還是會算進%1..%99,還是可以用%1..%99存取,
所以下面的列子:
#TRIGGER {Hp: &HpVar Mana: &ManaVar} {#SHOW %1 %2}
會自動設@HpVar跟@ManaVar,%1跟%2也還是跟你用括號括起一樣,
這當你混合&VarName跟()在同一個trigger時很重要,要把&VarName也計算進去
樣式可以包含數種萬用字元的特殊字元
* 符合任意數量(包含0個)的字元或空白
? 符合單一個字元
%d 符合任意數量的數字(0-9)
%n 符合以+或-開頭的數字
%w 符合任意數量的英文字母(a-z) (也就是一個單字)
%a 符合任意數量的英數字(a-z,0-9)
%s 符合任意數量的空白字元(空格,tab)
%x 符合任意數量的非空白字元
%y 符合任意數量的非空白字元(跟%x一樣但也符合行首跟行尾)
%p 符合任何標點符號
%q 符合任何標點符號(跟%p一樣但也符合行首跟行尾)
%t 符合方向指令
%e 符合ANSI樣式的ESC字元
[range] 符合任意數量列在range的字元
^ 強制pattern符合在行首
$ 強制pattern符合在行尾
(pattern) 將符合的pattern存在參數%1到%99
~ 防止下一個字元被解釋為萬用字元,符合特殊字元時需要
~~ 符合~字元
{val1|val2|val3|...} 符合任何給定的字串,裡面不能再使用萬用字元
@variable 用給定的list或record符合字串
{^string} 不符合給定的字串
&nn 符合恰好nn字元
&VarName 將符合的字串值設給給定的變數(下面有更多資訊)
把pattern的任何部分存到%1..%99參數,用括號()包起來。
給定一個範圍(range),可以列出所有字元[abc]或用範圍[a-c]。
pattern裡要使用萬用字元本身的話,前面加一個引述字元(~),例如樣式~[test~]會解釋為符合[test],而不是解釋為範圍字元。
注意引述字元可以在Preferences裡更改。
要符合空行,使用樣式$。
要符合多數行,中間放入$來符合各行的界限。
pattern裡也可以包括變數,在執行符合測試前,會替換為變數的值
使用 &VarName
&VarName的語法要多加解釋,它用在直接把符合的樣式存入變數,例如,如果你有個trigger
#TRIGGER {You get &Gold coins}
然後MUD顯示
You get 1000 coins
則數值1000自動地放入@Gold變數,不用你更多的動作。
&VarName預設使用*萬用字元,要使用不同的萬用字元,在&字元後插入萬用字元。
在上面的例子,如果MUD顯示
You get many coins
@Gold變數會填入字串"many",要限制trigger只符合數字,把trigger改為
#TRIGGER {You get &%dGold coins}
現在"You get many coins" 不符合這個觸發了。你可以使用任何萬用字元,也可以用方括號[]來定義你自己的萬用範圍。
有時候你要擷取的字串後面有一些英文字。要界定變數名稱,把變數名稱放到大括號{}裡,例如要抓取
You have 1000gp
你可以使用trigger
#TRIGGER {You have &%d{Gold}gp}
只會符合數字而且正確地設@Gold為1000
&VarName語法也可以使用在資料庫紀錄,如果你有一個紀錄變數@char想要設定Gold欄位,
你可以使用觸發:
#TRIGGER {You get &char.Gold coins}
要在資料庫的第7個紀錄設定Gold欄位,你會
#TRIGGER {You get &7.Gold coins}
要設定當前紀錄的Gold欄位,省略紀錄號碼
#TRIGGER {You get &.Gold coins}
這種合併資料庫的語法,提供強大的方法抓取MUD的資訊
注意:用&VarName語法符合的字串還是會算進%1..%99,還是可以用%1..%99存取,
所以下面的列子:
#TRIGGER {Hp: &HpVar Mana: &ManaVar} {#SHOW %1 %2}
會自動設@HpVar跟@ManaVar,%1跟%2也還是跟你用括號括起一樣,
這當你混合&VarName跟()在同一個trigger時很重要,要把&VarName也計算進去
全站熱搜
留言列表