java - 在java中使用正则表达式和split方法时遇到问题

标签 java regex split

我有一个需要解析名称和版本的字符串列表,例如某些字符串如下所示:

应用名称1.2.5
应用程序名称 7.8.b
应用名称7.0

我想要两个字符串列表,一个包含应用程序名称,一个包含版本号,因此一个列表是:

应用名称
应用程序名称
应用程序名称

那么另一个列表将是

1.2.5
7.8.b
3.0

我尝试过仅使用空格来分割字符串,但如果名称始终位于索引 0 中并且版本始终位于索引 1 中,那将是最简单的。所以我尝试了“\\d”(按数字分割) ,但这并不像我想象的那样有效。任何帮助将不胜感激,并提前致谢

最佳答案

拆分在这里并不合适。尝试使用匹配器并使用 group获取应用程序名称和版本的方法。

Pattern p = Pattern.compile("^(\\D*[^\\d\\s])\\s*(\\d.*)", Pattern.DOT_ALL);
Matcher m = p.matcher(myString);
if (m.find()) {
  String appName = m.group(1);
  String versionNumber = m.group(2);
  ...
}

要了解正则表达式的工作原理,请查看以下内容:

^

表示从头开始匹配

(

启动组 1,该组将保存版本名称

\\D*

以任意数量的非数字开头

[^\\d\\s]

并以既不是数字也不是空格的内容结尾。

)

第 1 组结束

\\s*

它可能与版本号分隔零个或多个空格。

(

第 2 组包含版本号。

\\d

以数字开头

.*

并继续输入的其余部分。

)

结束。

关于java - 在java中使用正则表达式和split方法时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6312950/

相关文章:

Java初学者问题——String.format

java - BufferedReader 如何知道要读取哪个文件?

java - 检测 JSplitPane 分隔符何时被拖动,而不是组件被调整大小

regex - 开始,尝试循环日期正则表达式结果

python - 仅在 python 中的双引号后拆分字符串

java - Swing 将 JOptionPane 链接到 JFileChooser

c# - 只去掉字符串中最左边的字母,只去掉左边的字母

java - IMDB 数据库的正则表达式

java - List<String> 类型的 split(String) 方法未定义

c - 接受位域值的函数 arg 使用什么类型