java - Java regex to match
问题描述
For regex validation of string for 1 or 1_2 or 0_2_3. So it's either a digit or digit_digit with maximum 3 times.
I have tried[0-4]{1}||([0-4]+[_]+[0-4]){1,3}
This is not doing the validation correctly.
解决方案
首先,您指定了两个由 分隔的替代选项|
:
[0-4]{1}
匹配 0 - 4 范围内的单个数字,但{1}
完全是多余的,因为[0-4]
做同样的事情。
您的第二个选择(在 之后|
)是([0-4]+[_]+[0-4]){1,3}
,但[0-4]+
它本身将匹配 1 个或多个(无限数量)的数字。下一项[_]+
将匹配一个或多个_
字符(但也将只是_+
),下一项[0-4]
将匹配一个数字。然后整个组可以重复 1 到 3 次,由 指定{1,3}
。因此,这将匹配,例如12312311123______4 91293939___8 12___8,其中我使用突出显示来显示三个重复组。
如果我了解您要匹配的内容,那么您的正则表达式应该是:
^[0-4](_[0-4]){0,2}$
^
匹配字符串的开头。[0-4]
匹配 0 到 4 范围内的单个数字。(
启动将重复的捕获组。_
匹配一个_
[0-4]
匹配 0 到 4 范围内的单个数字。- ')` 完成从 3 开始的捕获组。
{0,2}
表示由项目 3. 到 6. 定义的捕获组可以重复 0 到 2 次。$
匹配字符串的结尾。
拥有锚点 ^
的$
目的是确保输入字符串中除了您尝试匹配的字符之外没有其他无关字符。
推荐阅读
- python - 在顺序特征选择器中使用 CatBoostRegressor 时出现自定义记录器错误
- python - Tensorflow 2 Keras 模型策略梯度网络返回的值超出了有效操作的范围
- command-line-interface - 如何从文件列表中查找和存储标题行
- opencv - OpenCV:尝试保存补丁时 imwrite 不起作用
- r - 有没有办法部分匹配文本/字符串并在 R 中返回它的完整值
- php - 为什么添加此脚本时 POST 方法不起作用?
- django - 返回 django 查询集中的第一个对象
- amazon-web-services - AWS DataSync 可以更新修改的文件吗?
- python - 在命令行应用程序中存储消费者密钥的安全方法是什么?
- rust - type Item = &i32 ---> 如何使用 Item 将类型取消引用到 i32?