与正则表达式类似的SQL,等效于行的开始^和结束$

B_A_R_T_Y

我想(^|\s)1001(\s|$)在类似于表达式的Firebird中使用正则表达式:

例子

  • abc 1001 abc -是的
  • abc 121001 abc -错误
  • 1001 abc -是的
  • 121001 -错误
  • abc 1001 -是的

我尝试将其转换为Firebird中的正则表达式:

其中COLUMN与相似(^|[:WHITESPACE:])abc 1001 abc($|[:WHITESPACE:]),但^(行首)和$(行尾)不起作用,查询以以下结尾:

无效的SIMILAR TO模式异常。

我在https://firebirdsql.org/refdocs/langrefupd25-similar-to.html的Firebird Doc中找不到有关行首和行尾的任何信息

马克·罗特·韦尔

根据《 Firebird 2.5语言参考》中的SIMILAR TO说明文件

SIMILAR TO将字符串与SQL正则表达式模式匹配。与某些其他语言不同,该模式必须匹配整个字符串才能成功-匹配子字符串是不够的。

换句话说,正则表达式是多行的,并且-在给定链接文档的情况下-不提供开始/结束锚,因为已经暗示了它们(但是整个字符串而不是每行),因为不支持部分匹配。

Firebird中的正则表达式实现符合SQL标准,该标准也未定义开始/结束锚点。

根据您的要求,您可能需要类似以下内容:

'(abc 1001( %)?)|((% )?1001 abc)'

其中( %)?手段意味着可选地匹配一个空格和零个或多个任何字符。给定整个字符串必须匹配,这意味着它将找到一个空格或字符串的结尾,并且与相似(% )?

如果您还需要在字符串的中间找到它,则可能需要添加其他术语(但您的示例均不建议这样做)。

或者,直接等效于(^|\s)1001(\s|$)

'(%[[:WHITESPACE:]])?1001([[:WHITESPACE:]]%)?'

该答案的早期版本使用(% |)代替(% )?,但是给定的空白术语没有被记录,也没有成为标准的一部分,这可能是实现错误或充其量是未记录的功能。使用它需要您自担风险。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

定义正则表达式的结束和开始

具有开始/结束输入标记的T-SQL中的等效正则表达式

如何检查正则表达式以正则表达式开始和结束

如何在Perl中提取开始和结束正则表达式之间的行

正则表达式匹配以使用angular的表达式开始和结束

什么是C#正则表达式,等效于Java的appendReplacement和appendTail

正则表达式-用开始和结束引号替换带引号的字符串

Java –正则表达式–匹配开始和结束的卷曲标签

PHP正则表达式:从开始和结束删除所有字符

如何使用开始和结束字符验证来构建验证正则表达式?

返回开始和结束正则表达式之间的文本

Javascript 正则表达式如何匹配开始和结束标记

Python正则表达式,匹配组范围(开始和结束)

用正则表达式匹配字符串的相同开始和结束字符

正则表达式获取字符串的开始和结束匹配

正则表达式,用于删除开始和结束引号之间的空格(PHP)

查找指定长度的正则表达式,并在Java中也指定开始和结束

修改正则表达式以匹配开始和结束字符

使用开始和结束正则表达式选择单词

正则表达式自定义开始和结束引号 .Net

正则表达式以捕获方括号之间的开始和结束空格

正则表达式匹配由开始和结束单词分隔的单词前后的多行

正则表达式在开始和结束时排除字符

正则表达式匹配从开始和结束的连续字符

PHP正则表达式以给定数字开始和结束

Java正则表达式选择字符串中的开始和结束引号

正则表达式表示开始和结束特定单词[无重复]

正则表达式在开始和结束标记之间替换Unicode

正则表达式替换php中开始和结束标记之外的所有内容