考虑我有一个字符串:
Hi, <@W12313>, <@U333111>!
我需要使用模式<@([WU].+?)>.+
提取所有匹配项,以便获取["W12313", "U333111"]
列表。我成功匹配了一个,但我不知道如何将其提取到列表中。
我使用Java风味。
答案 0 :(得分:4)
使用fileprivate
正则表达式使用以下代码:
<@([WU][^>]*)>
请参阅Java demo和regex 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]
。