快速入门
教程
工具和语言
示例
参考
书籍评论
正则表达式工具
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 Groovy developers!

在 Groovy 中使用正则表达式

由于 Groovy 基于 Java,因此可以在 Groovy 中使用 Java 的正则表达式包。只需在 Groovy 源代码的顶部放置 import java.util.regex.*。然后,使用正则表达式的任何 Java 代码也会自动在 Groovy 代码中运行。

使用冗长的 Java 代码在 Groovy 中处理正则表达式不会非常 groovy。Groovy 有一系列语言特性,使使用正则表达式的代码更加简洁。你可以将 Groovy 特定的语法与常规 Java 代码混合使用。所有这些都基于 java.util.regex 包,无论如何都需要导入该包。

Groovy 字符串

Java 仅有一种字符串样式。字符串置于双引号之间。字符串中的双引号和反斜杠必须用反斜杠转义。这会在正则表达式文本中产生大量的反斜杠。

Groovy 有五种字符串样式。字符串可以置于单引号、双引号、三重单引号和三重双引号之间。使用三重单引号或双引号允许字符串跨越多行,这对于自由间隔正则表达式非常方便。不幸的是,这四种字符串样式都需要转义反斜杠。

第五种字符串样式专门为正则表达式提供。字符串置于正斜杠之间,并且字符串中只有正斜杠(而不是反斜杠)需要转义。这实际上是一种字符串样式。/hello/"hello" 都是 java.lang.String 的文字实例。不幸的是,以正斜杠分隔的字符串不能跨行,因此不能将它们用于自由间距正则表达式。

Groovy 模式和匹配器

要实际将字符串用作正则表达式,需要实例化 java.util.regex.Pattern 类。要实际对字符串使用该模式,需要实例化 java.util.regex.Matcher 类。在 Groovy 中使用这些类就像在 Java 中一样。但 Groovy 提供了一些特殊的语法,允许使用更少的键入创建这些实例。

要创建一个 Pattern 实例,只需在包含正则表达式的字符串前放置波浪号。该字符串可以使用 Groovy 的五种字符串样式中的任何一种。将此模式分配给变量时,确保在赋值运算符和波浪号之间留一个空格。

Pattern myRegex = ~/regex/

实际上,你不会经常以这种方式实例化模式。唯一需要 Pattern 实例的时间是分割字符串,这要求你调用 Pattern.split()。要查找正则表达式匹配或使用正则表达式进行搜索和替换,你需要一个 Matcher 实例,该实例将模式绑定到字符串。在 Groovy 中,可以使用 =~ 运算符直接从包含正则表达式的文字字符串创建此实例。这次 =~ 之间没有空格。

Matcher myMatcher = "subject" =~ /regex/

此短语表示

Matcher myMatcher = Pattern.compile(/regex/).matcher("subject")

最后,==~ 运算符是一种快速方法,用于测试正则表达式是否可以完全匹配字符串。myString ==~ /regex/ 等效于 myString.matches(/regex/)。要查找部分匹配,需要使用 Matcher

延伸阅读

Java 正则表达式 - 驯服 java.util.regex 引擎如果你想要更详细地了解 java.util.regex 包提供的所有功能,你可能需要获取 Mehran Habibi 撰写并由 Apress 出版的“Java 正则表达式”的副本。尽管本书完全没有提到 Groovy,但它是 java.util.regex 包最详细的指南,而这正是你在 Groovy 中使用的。Groovy 仅添加了一些语法快捷方式,这些快捷方式都在本网页上进行了说明。

我对 Java 正则表达式一书的评论

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

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