regexp ?switches? exp str ?matchvar? ?submatchvar submatchvar ...?
判斷正規表示式exp是否匹配部分或全部字串str,如果匹配返回1,否則返回0。如果在str後面指定了其他引數,則視為變數的名稱,其中儲存的是str中匹配exp的部分。matchvar儲存的是所有匹配exp的字串。
switches為開關,是以「-」開頭的字串,regexp支援的開頭有:
開關說明
-about
返回乙個包含正規表示式資訊的列表,而不是嘗試匹配正規表示式。列表的第乙個元素是子表示式數量。第二個元素是描述正規表示式的各種屬性的屬性名稱列表。此開關主要用於除錯。
-expanded
啟用正規表示式擴充套件語法,表示式中的空白符和注釋將被忽略。與嵌入式選項(?x)相同。
-indices
更改子matchvar、submatchvar中儲存的內容。不再儲存str中匹配的字元,而是儲存乙個列表其中包含匹配的字串在string中的起始和結束位置。
-line
開啟行敏感匹配。此選項相當於同時指定-linestop和-lineanchor選項。與嵌入式選項(?n)相同。
-linestop
與嵌入式選項(?p)相同。
-lineanchor
與嵌入式選項(?w)相同。
-nocase
忽略大小寫,
-all
使正規表示式在字串中盡可能多地匹配,返回找到的匹配項的總數。如果指定了matchvar、submatchvar,那麼只會儲存最後匹配的資訊。
-inline
將命令結果以列表形式返回,而不是替換到matchvar、submatchvar變數中,所以當使用此開關時不能指定matchvar、submatchvar變數。如果與-all一起使用,則會將每次的匹配結果都追加到列表中。
-start index
指定匹配正規表示式的字串str的起始位置。index的取值與string index中索引取值方式相同。使用此開關時,「^」不再匹配行開頭,\a則匹配index開始的str子串的開頭。
--標記開關結束。後面的引數將被視為exp,即使它以-開頭。
set multiline a\nab\nc
regexp a.*b $multiline matched
puts $matched
regexp -expanded "a .*b" $multiline matched
puts $matched
regexp a.* $multiline matched
puts $matched
regexp -line a.* $multiline matched
puts $matched
regexp -line -nocase a.* $multiline matched
puts $matched
regexp -line -all -nocase a.* $multiline matched
puts $matched
regexp -line -all -nocase a.*b$ $multiline matched
puts $matched
regexp -start 1 -line -nocase -inline a.* $multiline
regexp -- -a.* $multiline
regexp -inline -- -a.* -abcde
Tcl陣列命令之array
array option arrayname arg1 arg2 argn?操作名為arrayname的陣列,option選項決定了執行什麼操作。option支援以下選項 array set arrayname list向陣列中新增乙個或多個元素,list由偶數個元素組成。奇數個元素被視為陣列的索引...
JS正則 RegExp概述
ecmascript通過regexp型別支援正規表示式。格式 let expression pattern flagspattern 模式 flags 標記 說明 所有的元字元在模式中必須轉義 包括 元字元在正規表示式中都有一種或多種特殊功能,所以要匹配上面這些字元本身,就必須使用反斜槓來轉義。示例...
Tcl列表排序命令之lsort
lsort options?list對列表中的元素進行排序,返回排序後的新列表。預設情況下以ascii的順序遞增排序。options支援以下選項 選項說明 ascii 字串比較。dictionary 字典比較。與 asii相同,除了兩點 1.除非字母為排序的關鍵點,否則忽略大小寫。如abc會排在ab...