正则表达式匹配MySQL数据库中的单个,整个单词

时间:2015-01-12 16:21:10

标签: mysql regex

我需要正则表达式才能将[a-zA-Z]的单个单词与6个或更多字符匹配。

单词列表:

a
27
it was good because
it
cat went to
four
eight is bigger
peter
pepper
objects
83
harrison99
adjetives
atom-bomb

以下将匹配

胡椒

物体

形容词

如果以下内容匹配也不是太糟糕,因为我可以在

之后删除重复内容

这很好,因为

八个更大

原子的弹

到目前为止,我有这个

/[a-zA-z]{6,}/g

根据RegEx 101匹配6个字符或更多单词,但当我在MySQL数据库中使用它来过滤上的表时匹配RegExp

  1. 目前,它包含包含标点符号和其他非 a-zA-Z 字符的字词。我不希望它包含数字或标点符号的结果。
  2. 在一个理想的世界中,我不希望它包含一个包含多个单词的行,因为其他单词通常都是重复的。
  3. 实际MySQL结果

    如果一行包含数字或标点符号和/或包含一个或多个单词,我不希望它包括在内。

    我只希望结果为单个,整个单词为6+个字符

    Results

1 个答案:

答案 0 :(得分:3)

删除分隔符并为开始/结束添加anchors

SELECT 'abcdef' REGEXP '^[a-zA-Z]{6,}$'

- > 1

SELECT 'a abcdef' REGEXP '^[a-zA-Z]{6,}$'

- > 0

此外,我将字符类中的[a-zA-z]更改为[a-zA-Z]


您也可以使用[a-zA-Z] POSIX style bracket extension代替[[:alpha:]]。所以它变成了:

^[[:alpha:]]{6,}$

作为附注:MySql使用Henry Spencer's implementation of regular expressions。如果需要word boundaries,请使用[[:<:]]word[[:>:]] See manual以获得进一步的语法差异)