快速入门
教程
工具和语言
示例
参考
书评
正则表达式工具
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 模式
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 模式 风格相同,但增加了许多现代正则表达式风格中可用的功能,而 XML 模式风格中没有这些功能。所有有效的 XML 模式正则表达式也是有效的 XQuery/XPath 正则表达式。反之则不一定成立。

由于 XML 模式风格仅用于真/假有效性测试,因此出于性能原因,这些功能已被淘汰。XQuery 和 XPath 函数执行更复杂的正则表达式运算符,这些运算符需要功能更丰富的正则表达式风格。话虽如此,XQuery 和 XPath 正则表达式风格仍然受到现代标准的限制。

XQuery 和 XPath 在 XML 模式 风格的功能之上支持以下功能

虽然 XML 模式根本不允许匹配模式,但 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) 类似于许多编程语言中的“split”函数。它返回一个字符串数组,其中包含 subject 中所有正则表达式匹配项之间的所有子字符串。该数组不会包含正则表达式匹配项本身。如果正则表达式匹配 subject 字符串中的第一个或最后一个字符,则结果数组中的第一个或最后一个字符串将为空字符串。

fn:tokenize 也无法处理零长度正则表达式匹配项。

| 快速入门 | 教程 | 工具和语言 | 示例 | 参考 | 书籍评论 |

| 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 |