java - 正则表达式选择不带括号的点之间的组
问题描述
我有这样的字符串:
test.as123[13].tdfv
Parent.child1
test.d12[0].asdf
我需要一个正则表达式,它可以让我得到这样的组:
- 测试,as123,tdfv
- 父母,孩子1
- 测试,d12,asdf
所以我需要在点上划分组,并删除其名称中的括号。
我尝试使用这样的否定:
([^\W\d]+)
但是结果会有孩子,而不是孩子1。
我的问题是我不确定如何忽略特定的字符串\[\d\]
并继续匹配\d
我尝试使用负前瞻,但我认为我做错了什么。这是我的尝试:
\w+(?!\[[0-9]*?\])
例如,这确实匹配:
- 测试,13,tdfv
解决方案
您可以删除方括号内所有出现的数字,然后在一个点上拆分:
.replaceAll("\\[\\d+]", "").split("\\.")
或者,您可以直接在模式上拆分(?:\[\d+])?\.
:
.split("(?:\\[\\d+])?\\.")
它匹配
(?:\[\d+])?
[
- a , 1+ 位的可选出现,]
\.
- 一个点。
在线查看Java 演示:
String s = "test.as123[13].tdfv";
String results[] = s.replaceAll("\\[\\d+]", "").split("\\.");
System.out.println(Arrays.toString(results));
// => [test, as123, tdfv]
String results2[] = s.split("(?:\\[\\d+])?\\.");
System.out.println(Arrays.toString(results2));
// => [test, as123, tdfv]
推荐阅读
- google-maps-api-3 - 使用 BOTNET + APK 滥用 Google Maps API KEY
- angular - 将“隐藏”类应用于组件而不是使用 *ngIf 隐藏它们是不好的做法吗?- 角
- html - html:添加指向重叠图像的链接 [图片]
- javascript - & 号被发送为 & 而不是 & 尝试更新 MySQL 数据库时
- mysql - 在具有两个不同条件mysql的同一列上求和
- python-3.x - 如何修复西里尔字母不解码
- javascript - 插入输入日期后我没有得到输出
- c++ - 我无法从文件中读取以确认用户名
- java - 如何使用java从PDF文件中读取两个单词之间的多行内容?
- sql - 按关联存在排序记录