-1

我有一个带有这样标签的字符串

Car [[Best Praxis]] News Weather

我想将其拆分为具有如下条目的字符串列表:

Car
Best Praxis
News
Weather

我的第一种方法是搜索[[]]并以此吐出它。(就像使用 Sax 解析器一样)但是代码可能很难看。

我认为它必须以某种方式通过 Streams 轻松完成,但我没有找到如何使用 Streams 的解决方案,因为我有这些 regons 。

知道如何轻松完成这项任务吗?因为我正在传递一个标签列表,所以一个库可能已经解决了这个问题,或者它可以通过流来解决?

4

1 回答 1

3

您可以使用以下正则表达式,(?<=\[\[)([\w\s]+)(?=]])|(\w+)这是一个firstWay|secondWay|OR

  1. (?<=\[\[)([\w\s]+)(?=]])意思是

    • ([\w\s]+): 字符或空格,所以可以是单词列表
    • (?<=\[\[)确保以 2 个左方括号为前缀
    • (?=]])确保以 2 个右方括号为前缀
  2. (\w+)只是一个词

给予

List<String> values = Pattern.compile("(?<=\\[\\[)([\\w\\s]+)(?=]])|(\\w+)")
                             .matcher("Car [[Best Praxis]] News Weather")
                             .results()
                             .map(MatchResult::group)
                             .collect(Collectors.toList());

System.out.println(values); // [Car, Best Praxis, News, Weather]

Regex Demo

于 2020-11-11T20:04:11.600 回答