gpt4 book ai didi

java - java中如何分割字符串?

转载 作者:行者123 更新时间:2023-12-01 09:26:49 25 4
gpt4 key购买 nike

我要分割的字符串如下所示。

String text = "    *Some text*   *Another text* *Yet another text*        **last text**";

我需要拆分上面的字符串,以便得到如下所示的数组。

String[] array = {"Some text", "Another text", "Yet another text", "last text"}

如果您注意到,前三个文本周围有一个星号 (*),而最后一个文本周围有两个星号。

此外,文本之间可以有空格,例如。 *一些文字*.

文本和*之间不会有任何空格

例如*文本* - 将会发生

*  some text * - will not happen

任何人都可以帮忙,因为我不太了解正则表达式。

最佳答案

以下是根据您的问题和评论推断出的规范:

  • 首字母 * 后应跟一个单词字符(字母/数字/下划线)
  • 尾随 * 前面应带有单词 char

您可以仅使用 "\\B\\*\\b([^*]+)\\b\\*\\B" 模式来断言星号的预期位置(\\B\\*\\b - 非单词字符或字符串开头之后、单词字符之前的星号,以及 \\b\\*\\B - 非单词字符之前/字符串结尾和单词字符之后的星号),并将除 * 之外的 1 个或多个字符放入第 1 组。

String s = "    *Some text*   *Another text* *Yet another text*        **last text**";
Pattern pattern = Pattern.compile("\\B\\*\\b([^*]+)\\b\\*\\B");
Matcher matcher = pattern.matcher(s);
while (matcher.find()){
System.out.println(matcher.group(1));
}

更复杂的变体,仅检查星号后面/前面是否有空格(start|space+*+非空格+any_chars_not_parens+非空格+*+空格|end)可以是

"(?<!\\S)\\*(?!\\s)([^*]+)(?<!\\s)\\*(?!\\S)"

参见another Java demo

关于java - java中如何分割字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39766144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com