首页 > 解决方案 > 需要基于字符为阿拉伯语的搜索参数在 Mysql 中进行匹配的正则表达式

问题描述

假设表格中的单词是:

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

结果应在 2 个过滤器下查看:

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

结果 :


ab 作为 ablxyx pqr tpl

ab 作为 ablmnr

2) 排除空格:以“ab as”和任何编号开头。附加到此字符串的字符和单词,没有空格

结果 :


绝对的

ab astestabc

结果应该是互斥的。

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

标签: mysqlregexregex-lookaroundsregex-group

解决方案


您可以为此使用 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 作为 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<>在这里摆弄


推荐阅读