XSLT2 0 正規表示式

2021-08-30 01:40:13 字數 3865 閱讀 1002

其實,正規表示式是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...