【问题标题】:Elegant way for splitting tags优雅的标签分割方式
【发布时间】:2020-11-11 19:48:18
【问题描述】:

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

Car [[Best Praxis]] News Weather

我想将它拆分成一个字符串列表,其中的条目如下:

Car
Best Praxis
News
Weather

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

我认为 Streams 必须以某种方式轻松完成,但我没有找到解决方案如何处理流,因为我有这些 regons 在刹车中。

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

【问题讨论】:

    标签: java tags java-stream


    【解决方案1】:

    您可以使用以下正则表达式(?<=\[\[)([\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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-01
      • 1970-01-01
      • 2020-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多