java 正则表达式 如何匹配固定长度的数字
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 正则表达式 如何匹配固定长度的数字相关的知识,希望对你有一定的参考价值。
我要在下面的数据中找出名字为id,长度为10的数字串。
"comments":["created_at":"Mon Nov 04 21:19:49 +0800 2013","id":3641023823933285,"text":"太可爱了","source":"<a href=\"http://app.weibo.com/t/feed/qsbvs\" rel=\"nofollow\">手机微博触屏版</a>","user":"id":2899165811,"idstr":"2899165811","class":1,"screen_name":‘’haha‘
即要找出"id":2899165811
我用的正则表达式是 "\"id\":([0-9]d10)"
但是结果显示的有3641023823和2899165811。也就是把"id":3641023823933285中前10个数留下了。
想问如何才能直接丢掉"id":3641023823933285?
求助啊~~~
好吧,我的意思是只要连续的十位数字,但是结果却把3641023823933285的前十位也给我了。
不过还是很感谢你~~~
Pattern pattern = Pattern.compile("\"id\":\\d10,");
Matcher matcher = pattern.matcher(value);
while(matcher.find())
String findValue=matcher.group();
System.out.println(findValue);
System.out.println(findValue.substring(0, findValue.length()-1));
Pattern pattern = Pattern.compile("\"id\":\\d10,");
Matcher matcher = pattern.matcher(input);
while(matcher.find())
if(matcher.group().length() == 15)
System.out.println(matcher.group());
追问
试了一下,还是不行。不过同样感谢
参考技术B 你可以找出"id":2899165811,(加逗号)嘛,如果10位数后面没有逗号则不匹配追问但是如何才能在打印时不打出逗号呢?数据太多了,没法手动删除呀。
追答substring截取一下,结果不是类似"id":2899165811,这种固定格式嘛,长度16位,截取到15位OK了呀substring(15)
正则表达式匹配具有不同数字和最小长度的数字
【中文标题】正则表达式匹配具有不同数字和最小长度的数字【英文标题】:Regex to match number with different digits and minimum length 【发布时间】:2018-05-04 07:30:09 【问题描述】:我正在尝试编写一个正则表达式(用于验证 ac# .NET Core 模型上的属性,该模型会生成 javascript 表达式)以匹配由至少两个不同数字组成且最小长度为 6 位的所有数字。
例如:
222222 - 无效
122222 - 有效
1111125 - 有效
我正在尝试以下表达式:(\d)+((?!\1)(\d))
,如果有不同的数字,它匹配序列但是我如何将整个模式的大小限制为6,
?
非常感谢
【问题讨论】:
你有时间检查我的答案吗?请检查它是否按您预期的方式工作。 【参考方案1】:你可以使用
^(?=\d6)(\d)\1*(?!\1)\d+$
见regex demo
详情
^
- 字符串开头
(?=\d6)
- 至少 6 位数字
(\d)
- 任何数字都被捕获到第 1 组
\1*
- 在第 1 组中捕获的值出现零次或多次
(?!\1)
- 下一个数字不能与第 1 组中的相同
\d+
- 1+位
$
- 字符串结束。
【讨论】:
以上是关于java 正则表达式 如何匹配固定长度的数字的主要内容,如果未能解决你的问题,请参考以下文章
具有至少 1 个数字和 1 个字符且固定长度为 11 的字母数字字符串的正则表达式