快速入門
教學
工具和語言
範例
參考
書籍評論
正規表示式工具
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 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 架構未提供指定比對模式的方法。 永遠不會比對換行符號,而且模式永遠以大小寫敏感的方式套用。如果您想要以大小寫不敏感的方式套用 文字,您需要將其改寫為 [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 |