加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读