正则表达式:多次提取条目

时间:2018-06-07 09:06:33

标签: java regex

考虑我有一个字符串:

Hi, <@W12313>, <@U333111>!

我需要使用模式<@([WU].+?)>.+提取所有匹配项,以便获取["W12313", "U333111"]列表。我成功匹配了一个,但我不知道如何将其提取到列表中。

我使用Java风味。

1 个答案:

答案 0 :(得分:4)

使用fileprivate正则表达式使用以下代码:

<@([WU][^>]*)>

请参阅Java demoregex demo

模式匹配

  • String s = "Hi, <@W12313>, <@U333111>!"; Pattern pattern = Pattern.compile("<@([WU][^>]*)>"); Matcher matcher = pattern.matcher(s); List<String> res = new ArrayList<>(); while (matcher.find()){ res.add(matcher.group(1)); } System.out.println(res); // => [W12313, U333111] - <@子字符串
  • <@ - 捕获第1组:
    • ([WU][^>]*) - [WU]W然后
    • U - 与[^>]*以外的0 +字符匹配的否定字符类
  • > - >字符。

如果>W之后只能有数字,请将U替换为[^>]*

如果在[0-9]*之后可以有任何ASCII大写字符,请将@替换为[WU]

相关问题