其實,正規表示式是xpath2.0定義的,暫且放在xslt裡說吧。
還是舉例來說正規表示式的用法吧。
xml原始檔任意,xslt檔案:
<
?xml version='1.0'?
>
<
xsl:stylesheet
version=
"2.0"
xmlns:xsl=
""xmlns:xs=
"">
<
xsl:template
match=
"/">
<
xsl:variable
name=
"file"
select=
"'aa.txt'"
/ >
<
xsl:variable
name=
"string"
select=
"unparsed-text($file,iso-8859-1)"
/ >
<
xsl:analyze-string
select=
"$string"
regex=
"\n"
>
<
xsl:non-matching-substring
>
<
row>
<
xsl:analyze-string
select=
"."regex=
'("([^"]*)")|([^,]+)'
>
<
xsl:matching-substring
>
<
cell
>
<
xsl:value-of
select=
"regex-group(2)"
/ >
<
xsl:value-of
select=
"regex-group(3)"
/ >
<
/cell
>
<
/xsl:matching-substring
>
<
/xsl:analyze-string
>
<
/row
>
<
/xsl:non-matching-substring
>
<
/xsl:analyze-string
>
<
/xsl:template
>
<
/xsl:stylesheet
>
摘自xslt2.0 porgrammer's reference(稍有改動)。
aa.txt的內容:
123,"mary jones","ibm","usa",1997-05-14
423,"barbara smith","general motors","usa",1996-03-12
6721,"martin mcdougall","british airways","uk",2001-01-15
830,"jonathan perkins","springer verlag","germany",2000-11-17
得到輸出結果:
<
?xml version='1.0' ?
>
<
row
xmlns:xs=
"">
<
cell
>
123 <
/cell
>
<
cell
>
mary jones
<
/cell
>
<
cell
>
ibm <
/cell
>
<
cell
>
usa <
/cell
>
<
cell
>
1997-05-14
<
/cell
>
<
/row
>
<
row
xmlns:xs=
"">
<
cell
>
423 <
/cell
>
<
cell
>
barbara smith
<
/cell
>
<
cell
>
general motors
<
/cell
>
<
cell
>
usa <
/cell
>
<
cell
>
1996-03-12
<
/cell
>
<
/row
>
<
row
xmlns:xs=
"">
<
cell
>
6721
<
/cell
>
<
cell
>
martin mcdougall
<
/cell
>
<
cell
>
british airways
<
/cell
>
<
cell
>
uk <
/cell
>
<
cell
>
2001-01-15
<
/cell
>
<
/row
>
<
row
xmlns:xs=
"">
<
cell
>
830 <
/cell
>
<
cell
>
jonathan perkins
<
/cell
>
<
cell
>
springer verlag
<
/cell
>
<
cell
>
germany
<
/cell
>
<
cell
>
2000-11-17
<
/cell
>
<
/row
>
我們可以看到尋找與regex匹配的字串的過程是:首先從input的第乙個字元開始,看能否找到,如果找到了,那麼就擷取該匹配字元,然後從後面的字元開始,再次尋找,如果未找到,就將第乙個字元確定為不匹配字元,然後從第二個字元開始尋找,一直到查詢完所有字元。
原來的xslt檔案正規表示式匹配的模式為:
* 後面跟乙個問號(?),代表非貪婪原則。意思是,一旦找到類似"***xx"形式的字串就認定為匹配字串。但是在這裡沒有必要,因為中間的***x不能為"(雙引號),也就防止了出現貪婪的"***""***x"***"的形式。也算是對大師提出的乙個疑問吧。呵呵。
20個正規表示式
var reg d d 2 d var r fieldvalue.match reg if r null alert date format error 密碼的強度必須是包含大小寫字母和數字的組合,不能使用特殊字元,長度在8 10之間。d a z a z 字串僅能是中文。u4e00 u9fa5 w ...
20個正規表示式
1 校驗密碼強度 密碼的強度必須是包含大小寫字母和數字的組合,不能使用特殊字元,長度在8 10之間。d a z a z 2.校驗中文 字串僅能是中文。u4e00 u9fa5 3.由數字 26個英文本母或下劃線組成的字串 w 4.校驗e mail 位址 同密碼一樣,下面是e mail位址合規性的正則檢...
正規表示式 正規表示式 總結
非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...