在java中使用正则表达式和split方法时遇到问题
我有一个需要解析名称和版本的字符串列表,例如某些字符串如下所示:
App Name 1.2.5
应用程序名称 7.8.b
应用程序名称 7.0
我想要两个字符串列表,一个包含应用程序名称,一个包含版本号,所以一个列表是:
应用程序名称
应用程序名称
应用程序名称
那么其他列表将为
1.2.5
7.8.b
3.0
我尝试过仅使用空格来分割字符串,但如果名称始终位于索引 0 中并且版本始终位于索引 1 中,那将是最简单的。所以我尝试了“\\d”(按数字分割),但是这并不像我想象的那样有效。任何帮助将不胜感激,并提前致谢
I have a list of strings that I need to parse for the name and version, for example some strings look like this:
App Name 1.2.5
AppName 7.8.b
The App Name 7.0
I want to have two list of Strings one with the app name and one with the version number so one list is:
App Name
AppName
The App Name
Then the other list will be
1.2.5
7.8.b
3.0
I have tried just using a space to split the strings, but it would be easiest if the name was always in index 0 and the version is always in index 1. So I tried "\\d" (split by digits), however that didn't work like I thought it was. Any help would be appreciated, and thanks in advance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
分裂在这里不太合适。尝试使用匹配器并使用
group
方法来获取应用程序名称和版本。要了解正则表达式的工作原理,请看下面的内容:
表示从第 1 组开始匹配,
该组将保存版本名称
,该版本名称以任意数量的非数字开头
,以既不是数字也不是数字的内容结尾空间。
第 1 组的末尾
,可能与版本号用零个或多个空格分隔。
(
第 2 组包含版本号。
它以数字开头
,并继续输入的其余部分。
结束。
Split isn't really appropriate here. Try using a matcher instead and use the
group
method to get the app name and version.To understand how the regular expression works, take a look at the below:
means start matching at the start
starts group 1 which will hold the version name
which starts with any number of non-digits
and ends with something that is neither a digit nor a space.
end of group 1
which might be separated from the version number by zero or more spaces.
(
Group 2 contains the version number.
It starts with a digit
and continues the rest of the input.
The end.
尝试使用
" (?=\\d)"
这是一个空格,后跟一个不被使用的数字(通过零宽度正向前视)
Try with
" (?=\\d)"
that is a space followed by an digit which is not consumed (via zero-width positive lookahead)