快速入门
教程
工具和语言
示例
参考
书评
正则表达式工具
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 源和博客
RegexBuddy—The best regex editor and tester for XML developers!

XML 模式正则表达式

W3C XML 模式标准定义了自己的正则表达式风格。您可以在 XML 模式中简单类型定义的 pattern 方面中使用它。例如,以下内容使用正则表达式定义简单类型“SSN”,要求元素包含有效的美国社会安全号码。

<xsd:simpleType name="SSN">
    <xsd:restriction base="xsd:token">
        <xsd:pattern value="[0-9]{3}-[0-9]{2}-[0-9]{4}"/>
    </xsd:restriction>
</xsd:simpleType>

与其他正则表达式风格相比,XML 模式风格的功能非常有限。由于它仅用于验证整个元素是否与模式匹配,而不是从大量数据块中提取匹配项,因此您不会真正错过其他风格中经常发现的功能。这些限制允许使用高效的 文本定向引擎 实现模式验证器。

特别值得注意的是,完全没有锚点,如 插入符号和美元词边界环视。XML 模式始终隐式地锚定整个正则表达式。正则表达式必须与整个元素匹配,才能认为该元素有效。如果您有模式 regexp,XML 模式验证器将以与 Perl、Java 或 .NET 使用模式 ^regexp$ 相同的方式应用它。如果您想接受所有元素,其中 regex 出现在其内容的中间位置,则需要使用正则表达式 .*regex.*。两个 .* 将匹配项扩展为覆盖整个元素,假设它不包含换行符。如果您想允许换行符,可以使用类似 [\s\S]*regex[\s\S]* 的内容。将 简写字符类 与其否定版本相结合,将生成一个匹配任何内容的字符类。

XML 模式不提供指定匹配模式的方法。 从不匹配换行符,并且模式始终以区分大小写的方式应用。如果您想以不区分大小写的方式应用 literal,您需要将其重写为 [lL][iI][tT][eE][rR][aA][lL]

XML 正则表达式没有任何类似 \xFF\uFFFF 的标记来匹配特定(不可打印)字符。您必须将它们作为文本字符添加到您的正则表达式。如果您使用纯文本编辑器将正则表达式输入到 XML 文件中,那么您可以使用 &#xFFFF; XML 语法。否则,您需要从字符映射中粘贴字符。

惰性量词 不可用。由于该模式无论如何都锚定在主题字符串的开头和结尾,并且仅返回成功/失败结果,因此贪婪量词和惰性量词之间唯一潜在的差异将是性能。您永远无法通过将贪婪量词更改为惰性量词或反之亦然来使完全锚定的模式匹配或失败。

XML 模式正则表达式支持以下内容

请注意,XQuery 和 XPath 中可用的正则表达式函数使用不同的正则表达式风格。这种风格是此处描述的 XML 模式风格的超集。它添加了一些在许多现代正则表达式风格中可用的特性,但不在 XML 模式风格中。

XML 字符类

尽管存在局限性,但 XML 模式正则表达式引入了两个便捷功能。特殊的简写字符类 \i\c 使得匹配 XML 名称变得容易。没有其他正则表达式风格支持这些。

字符类减法可以轻松匹配位于特定列表中但不在另一个列表中的字符。例如,[a-z-[aeiou]] 匹配一个英文辅音。此功能现在也可在 JGsoft.NET 正则表达式引擎中使用。在使用 Unicode 属性 时,此功能特别方便。例如,[\p{L}-[\p{IsBasicLatin}]] 匹配任何不是英文字母的字母。

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

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