当前位置: 首页 > 知识库问答 >
问题:

使用regex按列拆分字符串

曾河
2023-03-14
4 
1 1
1 2 1
0
1 1

这是作为输入的字符串,但我只需要每一列,从第二列开始,即:

  • 1(第二行)
  • 2和1(第三行)
  • 1(第五排)

这个字符串在可能有多少行或多少列(列被一个空格分割)方面没有固定的大小。

我认为通过使用以下工具,这相当容易:

string.split("enter regex here");

我需要第一列之后的每一列。我仍在学习regex,但似乎找不到一个好的解决方案。我知道关于拆分的“\\r?\\n”和“”,但不知道如何将两者连接起来以获取每一列。非常感谢您的帮助:)

另一个字符串可能如下所示:

2
1
1 2
9 3 5
1 3
0 9 2 4
0

在这种情况下,我需要2、3、5、3、9、2、4。

共有3个答案

廖琪
2023-03-14
String s = "4 \n"
        + "1 1\n"
        + "1 2 1\n"
        + "0\n"
        + "1 1\n";
String result = s.replaceAll("((^|\\n)\\d|[ ])", "").replaceAll("(\\d)(?=\\d)", "$1, ");
System.out.println(result); 
//1, 2, 1, 1
蔺宇
2023-03-14

您可以使用字符串拆分每一行。线条获取线条流,然后使用模式在每个空间拆分后平面映射这些线条。拆分流,跳过第一列,并使用逗号作为分隔符重新连接:

String input ="4 \n"
            + "1 1\n"
            + "1 2 1\n"
            + "0\n"
            + "1 1\n";

Pattern pattern = Pattern.compile(" ");
String result   = input.lines()
                       .flatMap(line -> pattern.splitAsStream(line).skip(1))
                       .collect(Collectors.joining(", "));

System.out.println(result);

//1, 2, 1, 1
阮选
2023-03-14

您可以使用以下正则表达式

(?<=\d )\d+

它匹配任何数字组合,后跟“数字空格”。

您应该将匹配器与此正则表达式一起使用,而不是在此上拆分。

查看此处的演示。

 类似资料:
  • 我正在尝试找到正则表达式以获得字符串的最后一个字符: 通过正则表达式查找最后一个字符应返回“F”。

  • 尝试查找正则表达式以获取字符串的最后一个字符String=“a76b62zf63” 通过正则表达式查找最后一个字符返回“F”

  • 问题内容: 我想分裂字符串列,其中值 不等于 到 并保存到另一个表,这将是这样的: 这是我的分割字符串代码: 这是我用来调用该函数的代码: 上面的代码给我这个错误: 问题答案: 子查询返回了1个以上的值。当子查询遵循=,!=,<,<=,>,> =或将子查询用作表达式时,不允许这样做。该语句已终止。 由于您的子查询返回了多行,因此发生了上述错误。尝试执行以下操作: 您会看到它将返回3行,每一项返回一

  • 如何将过滤器列表拆分为单个过滤器元件?split2String在线程“main”java.util.regex中导致:异常。PatternSyntaxException:索引10或(|和)附近的未闭合组(

  • Java官方文档说明: 例如,字符串使用以下表达式Regex Result生成以下结果: 这就是我需要它工作的方式。然而,如果我运行这个: 它打印: 这与我的预期相去甚远: 为什么会这样?

  • 问题:我可以在给定的正则表达式上拆分字符串,但相同的正则表达式在匹配具有相同正则表达式的方法时失败。 问题:如何使用用于拆分同一字符串的同一正则表达式在matches方法上返回true? 查看操作中的正则表达式