mysql - 需要正则表达式在 Mysql 中基于搜索参数进行匹配,其中字符是阿拉伯语

标签 mysql regex regex-lookarounds regex-group

假设表格中的单词是:

  • ab测试
  • ab atestabc
  • ab 为
  • ablxyx pqr tpl
  • ab 为 ablmnr
  • wasab 为 ablmnr
  • vbn ab 作为 abltere

我需要匹配起始单词的位置:“ab as”(包括空格),然后是无穷大(即 n 个组合或字符)

结果应该在 2 个过滤器下显示:

1) 包含空格:以“ab as”和任何编号开头。附加的单词或字符

结果:

<小时/>

ab 作为 ablxyx pqr tpl

ab 为 ablmnr

2) 排除空格:以“ab as”和任何编号开头。附加到该字符串的字符和单词的数量,不带空格

结果:

<小时/>

ab测试

ab atestabc

结果应该是互斥的。

任何人都可以与我分享相同的 Mysql REGEX 表达式吗?

最佳答案

您可以使用 REGEXP 来实现

CREATE TABLE textlist
    (`text` varchar(17))
;

INSERT INTO textlist
    (`text`)
VALUES
    ('ab astest'),
    ('ab astestabc'),
    ('ab as'),
    ('ablxyx pqr tpl'),
    ('ab as ablmnr'),
    ('wasab as ablmnr'),
    ('vbn ab as abltere')
;
✓

✓
SELECT DISTINCT SUBSTR(`text`,POSITION("ab as" IN `text`),LENGTH(`text`)) 
FROM textlist WHERE `text` REGEXP 'ab as[[:blank:]]';
| SUBSTR(`text`,POSITION("ab as" IN `text`),LENGTH(`text`)) |
| :-------------------------------------------------------- |
| ab as ablmnr                                              |
| ab as abltere                                             |
SELECT DISTINCT SUBSTR(`text`,POSITION("ab as" IN `text`),LENGTH(`text`)) 
FROM textlist WHERE `text` REGEXP 'ab as[^[:blank:]]';
| SUBSTR(`text`,POSITION("ab as" IN `text`),LENGTH(`text`)) |
| :-------------------------------------------------------- |
| ab astest                                                 |
| ab astestabc                                              |

db<> fiddle here

关于mysql - 需要正则表达式在 Mysql 中基于搜索参数进行匹配,其中字符是阿拉伯语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59111514/

相关文章:

javascript - 如何从此正则表达式模式中获取以下用例的匹配项?

C# MySQLDataReader 在结果中替换

java - 如何在 spring hibernate 中加入表

mysql - 如何将excel文件导入mysql

regex - Perl:用它们的计数替换连续的数字

javascript - 是否可以检测字符串是否包含javascript?

php - 在 PHP 中捕获重复字母 - 正则表达式

java - 使用正则表达式替换不在括号中的逗号

java - 正则表达式匹配除特定模式之外的任何内容

php - Laravel Eloquent ORM 关系