假设表格中的单词是:
- 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/