【问题标题】:Split numbers and letters from string with regular expression使用正则表达式从字符串中拆分数字和字母
【发布时间】:2015-12-28 11:19:09
【问题描述】:

我有以下正则表达式:

String regx = "\\d{2}\\w{3}";

它说,字符串中有两个数字和三个字母数字字符。我想使用上面的正则表达式拆分字符串。

例子:

String stringToSplit = "99E0L";

输出将是

99
E0L

是否可以在 Java 中使用上述正则表达式拆分以上字符串?我应该使用什么 API 来做到这一点?

【问题讨论】:

  • 你为什么不试着告诉我们?
  • @Tom 没这么说。我改进了修改建议。
  • 现在是string.split("(?<=\\d)(?=\\D)|(?<=\\D)(?=\\d)");
  • @Tom 我没有收到任何通知。

标签: java regex string split


【解决方案1】:

Capturing 而不是 splitting 应该是您的明显选择。但是如果你想分割,那么你可以使用 zero-width 断言。

public static void main(String[] args) {
    String stringToSplit = "99E0L";
    String[] arr = stringToSplit.split("(?<=\\G\\d{2})");
    for (String s : arr) {
        System.out.println(s);
    }
}

O/P:

99
E0L

【讨论】:

  • 你使用了不同的正则表达式。你的意思是我的 regx 是不可能的,我必须使用不同的
  • @sillyquestions - 您可以将正则表达式与 PatternMatcher 一起使用来捕获字符串,但不能拆分它们。
  • 感谢您的评论。我认为这可能在java中是可能的。这就是我想知道的。 :)
  • @sillyquestions - 你不应该使用这种方法。您应该将PatternMatcher 与您的正则表达式(带有捕获组)一起使用:P
  • 就像一个注释,当你想创建一个换行符时,要么使用两个空格" "要么&lt;br&gt;。使用 :D 的报价块格式看起来更好一些。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 1970-01-01
  • 2017-02-23
相关资源
最近更新 更多