仅在第一个匹配的正则表达式位置拆分字符串

时间:2018-04-05 11:04:14

标签: java regex

我有这个字符串: “123456 - A,Bcd,789101 - E,Fgh”

我希望它分为:“123456 - A,Bcd”和“789101 - E,Fgh”。 我怎样才能做到这一点?我应该使用哪些regexsplit表达式?

我看到我可以使用.matches(".*[a-z],\\s[0-9].*")在“Bcd”之后找到逗号 但是如何只用逗号分割字符串呢? .split(",\\s")分裂所有出现的逗号,后跟空格......

我使用JAVA 1.6。

1 个答案:

答案 0 :(得分:4)

您可以在逗号后拆分0+空格,6位数字,空格和连字符:

String[] result = s.split(",\\s*(?=\\d{6} -)");

请参阅regex demo

模式详情

  • , - 逗号
  • \s* - 0+空白字符
  • (?=\\d{6} -) - 一个积极的前瞻(非消费模式,它匹配的内容不会是结果的一部分),需要6个数字后面跟一个空格,-紧靠右边当前位置。