快速開始
教學課程
工具和語言
範例
參考
書籍評論
正規表示式工具
grep
PowerGREP
RegexBuddy
RegexMagic
一般應用程式
EditPad Lite
EditPad Pro
語言和函式庫
Boost
Delphi
GNU (Linux)
Groovy
Java
JavaScript
.NET
PCRE (C/C++)
PCRE2 (C/C++)
Perl
PHP
POSIX
PowerShell
Python
R
Ruby
std::regex
Tcl
VBScript
Visual Basic 6
wxWidgets
XML Schema
Xojo
XQuery 和 XPath
XRegExp
資料庫
MySQL
Oracle
PostgreSQL
更多此網站內容
簡介
正規表示式快速開始
正規表示式教學課程
替換字串教學課程
應用程式和語言
正規表示式範例
正規表示式參考
替換字串參考
書籍評論
可列印 PDF
關於此網站
RSS Feed 和部落格
RegexBuddy—The best regex editor and tester for XPath developers!

XQuery 和 XPath 正規表示式

XQuery 1.0 和 XPath 2.0 函數和運算子的 W3C 標準定義了三個函數 fn:matchesfn:replacefn:tokenize,它們將正規表示式作為其中一個參數。XQuery 和 XPath 標準為此目的引入了新的正規表示式風格。此風格與 XML Schema 風格相同,但增加了許多現代正規表示式風格中可用的功能,而 XML Schema 風格中沒有。所有有效的 XML Schema 正規表示式也都是有效的 XQuery/XPath 正規表示式。反之則不一定成立。

由於 XML Schema 風格僅用於真/假有效性測試,因此這些功能已因效能原因而移除。XQuery 和 XPath 函數執行更複雜的正規表示式運算子,需要功能更豐富的正規表示式風格。話雖如此,XQuery 和 XPath 正規表示式風格仍受到現代標準的限制。

XQuery 和 XPath 支援 XML Schema 風格中功能之上的下列功能

XML Schema 完全不允許比對模式,而 XQuery 和 XPath 函式都接受一個選用的 flags 參數來設定比對模式。正規表示式內的 模式修改器 不受支援。這四種比對模式可用

旗標指定為一個字串,其中包含您想要啟用的模式字母。例如 "ix" 啟用不區分大小寫和自由間距。如果您不想設定任何比對模式,您可以傳遞一個空字串給 flags 參數,或完全省略該參數。

三個正規表示式函式

fn:matches(subject, pattern, flags) 將主旨字串和正規表示式作為輸入。如果正規表示式比對主旨字串的任何部分,函式會傳回 true。如果完全無法比對,它會傳回 false。如果您只想要在正規表示式比對整個主旨字串時,函式傳回 true,您需要使用 插入符號

fn:replace(subject, pattern, replacement, flags) 將主旨字串、正規表示式和替換字串作為輸入。它傳回一個新的字串,其中主旨字串中所有與正規表示式模式比對的部分都已替換為替換文字。您可以使用 $1$99 將擷取群組重新插入替換中。$0 插入整個正規表示式比對。替換中的字面美元符號和反斜線必須用反斜線跳脫。

fn:replace 無法替換長度為零的比對。例如,fn:replace("test", "^", "prefix") 會引發錯誤,而不是像大多數程式語言中的基於正規表示式的搜尋和替換一樣傳回「prefixtext」。

fn:tokenize(subject, pattern, flags) 類似於許多程式語言中的「分割」函式。它傳回一個字串陣列,其中包含主旨中所有正規表示式比對之間的所有子字串。陣列不會包含正規表示式比對本身。如果正規表示式比對主旨字串中的第一個或最後一個字元,則結果陣列中的第一個或最後一個字串將為空字串。

fn:tokenize 也無法處理長度為 0 的正規表示式比對。

| 快速開始 | 教學課程 | 工具與語言 | 範例 | 參考 | 書籍評論 |

| grep | PowerGREP | RegexBuddy | RegexMagic |

| EditPad Lite | EditPad Pro |

| Boost | Delphi | GNU (Linux) | Groovy | Java | JavaScript | .NET | PCRE (C/C++) | PCRE2 (C/C++) | Perl | PHP | POSIX | PowerShell | Python | R | Ruby | std::regex | Tcl | VBScript | Visual Basic 6 | wxWidgets | XML Schema | Xojo | XQuery 與 XPath | XRegExp |

| MySQL | Oracle | PostgreSQL |