正则表达式工具 |
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 和博客 |
MySQL 对正则表达式的支持相当有限,但仍然非常有用。MySQL 只有一个允许你使用正则表达式的运算符。这是 REGEXP 运算符,它与 LIKE 运算符的工作方式相同,只是它不使用 _ 和 % 通配符,而是使用 POSIX 扩展正则表达式 (ERE)。尽管标准名称中带有“扩展”,但 POSIX ERE 风格按照现代标准来说是一种相当基本的正则表达式风格。不过,它使 REGEXP 运算符比简单的 LIKE 运算符强大且灵活得多。
LIKE 和 REGEXP 运算符之间的一个重要区别在于,LIKE 运算符仅在模式与整个字符串匹配时才返回 True。例如,WHERE testcolumn LIKE 'jg' 仅返回 testcolumn 与 jg 完全相同(可能大小写不同)的行。另一方面,WHERE testcolumn REGEXP 'jg' 将返回 testcolumn 在字符串中任何位置都有 jg 的所有行。使用 WHERE testcolumn REGEXP '^jg$' 仅获取与 jg 完全相同列。与 WHERE testcolumn LIKE 'jg%' 等效的是 WHERE testcolumn REGEXP '^jg'。无需在正则表达式的末尾放置 .*(REGEXP 等效于 LIKE 的 %),因为接受部分匹配。
MySQL 不提供任何 匹配模式。POSIX ERE 不支持正则表达式内的模式修饰符,而 MySQL 的 REGEXP 运算符不提供一种在正则表达式外部指定模式的方法。点 匹配所有字符,包括换行符,而 插入符号和美元符号 仅匹配字符串的开头和结尾。换句话说:MySQL 将换行符视为普通字符。如果表的排序规则不区分大小写(这是默认设置),则 REGEXP 运算符不区分大小写地应用正则表达式。如果您将排序规则更改为区分大小写,则 REGEXP 运算符将区分大小写。
请记住,MySQL 支持字符串中的 C 样式转义序列。虽然 POSIX ERE 不支持 \n 等标记来匹配不可打印字符(如换行符),但 MySQL 在其字符串中支持此转义。因此,WHERE testcolumn REGEXP '\n' 会返回 testcolumn 中包含换行符的所有行。MySQL 在解析正则表达式之前将字符串中的 \n 转换为单个换行符字符。这也意味着反斜杠需要转义。匹配单个反斜杠的正则表达式 \\ 在 MySQL 字符串中变为 '\\\\',而匹配美元符号的正则表达式 \$ 在 MySQL 字符串中变为 '\\$'。所有这些都不同于其他数据库,例如 Oracle,它不支持 \n 且不需要转义反斜杠。
要返回列与正则表达式不匹配的行,请使用 WHERE testcolumn NOT REGEXP 'pattern' RLIKE 运算符是 REGEXP 运算符的同义词。WHERE testcolumn RLIKE 'pattern' 和 WHERE testcolumn NOT RLIKE 'pattern' 与 WHERE testcolumn REGEXP 'pattern' 和 WHERE testcolumn NOT REGEXP 'pattern' 相同。我建议您使用 REGEXP 而不是 RLIKE,以避免与 LIKE 运算符混淆。
如果您希望在数据库中获得更强大的正则表达式功能,可以考虑使用 LIB_MYSQLUDF_PREG。这是一个 MySQL 用户函数开源库,可导入 PCRE 库。LIB_MYSQLUDF_PREG 仅以源代码形式提供。要使用它,您需要能够将其编译并安装到 MySQL 服务器中。安装此库不会以任何方式更改 MySQL 的内置正则表达式支持。它只是提供了以下附加功能
PREG_CAPTURE 从字符串中提取正则表达式匹配项。PREG_POSITION 返回正则表达式与字符串匹配的位置。PREG_REPLACE 对字符串执行搜索并替换。PREG_RLIKE 测试正则表达式是否与字符串匹配。
所有这些函数都将正则表达式作为其第一个参数。此正则表达式必须格式化为 Perl 正则表达式运算符。例如,要测试 regex 是否不区分大小写地匹配主题,您将使用 MySQL 代码 PREG_RLIKE('/regex/i', subject)。这类似于 PHP 的 preg 函数,它也需要 PHP 字符串中的正则表达式的额外 // 分隔符。
| 快速入门 | 教程 | 工具和语言 | 示例 | 参考 | 书籍评论 |
| 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 |
页面 URL:https://regexper.cn/mysql.html
页面上次更新:2021 年 8 月 24 日
网站上次更新:2024 年 3 月 15 日
版权所有 © 2003-2024 Jan Goyvaerts。保留所有权利。