php – 匹配空格后字符串中的数字位数
发布时间:2020-12-13 22:25:41 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试匹配字符串中的位数.这是我的 MySql查询的一部分 SELECT digits,concat(digits,' Digits ') as selects,count(*) as count FROM (SELECT (case WHEN `no` REGEXP '[[::]][0-9]{1}[[::]]' then '1' WHEN `no` REGEXP '[[::]][0-9]{2}[[::]]' then '
我正在尝试匹配字符串中的位数.这是我的
MySql查询的一部分
SELECT digits,concat(digits,' Digits ') as selects,count(*) as count FROM (SELECT (case WHEN `no` REGEXP '[[:<:]][0-9]{1}[[:>:]]' then '1' WHEN `no` REGEXP '[[:<:]][0-9]{2}[[:>:]]' then '2' WHEN `no` REGEXP '[[:<:]][0-9]{3}[[:>:]]' then '3' WHEN `no` REGEXP '[[:<:]][0-9]{4}[[:>:]]' then '4' end) AS digits FROM `no_ads` AS a ....... ....... 问题是在这个4U 2或4U 2这样的字符串中,当我的查询计为1时,我的查询会将其计为2位数([[:<:]] [0-9] {1} [[:>: ]]).我如何在第一个空间后开始计算? 解决方法
您的查询将匹配仅由数字组成的第一个单词中的数字位数,您可以在此处查看缩减的测试用例.因此,如果您假设您只有一个这样的数字,那么您的查询实际上是有效的,并且您可以在测试集中看到您的示例.
SELECT t,(case WHEN `t` REGEXP '[[:<:]][0-9]{1}[[:>:]]' then '1' WHEN `t` REGEXP '[[:<:]][0-9]{2}[[:>:]]' then '2' WHEN `t` REGEXP '[[:<:]][0-9]{3}[[:>:]]' then '3' WHEN `t` REGEXP '[[:<:]][0-9]{4}[[:>:]]' then '4' end) AS digits FROM test; +---------------+--------+ | t | digits | +---------------+--------+ | 23 | 2 | | 4U 2 | 1 | | 4U 2 a | 1 | | 4U 23 a | 2 | | Ad 34 34 34 d | 2 | | 4U 2 23 a | 1 | +---------------+--------+ 无论如何,如果你想要,一般来说匹配一行中第一个空格后发生的事情,你可以使用^([[:alnum:]] [[:blank:]])其中^是开头的符号串. See here the full list of Syntax of Regular Expressions (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |