考虑我有一个像这样的字符串:
Hi, <@W12313>, <@U333111>!
我需要提取所有匹配模式 <@([WU].+?)>.+
的匹配项所以我会得到 ["W12313", "U333111"]
的列表.我成功匹配了一个,但我不知道如何将其提取到列表中。
我使用 Java 风格。
最佳答案
使用 <@([WU][^>]*)>
使用以下代码的正则表达式:
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]
参见 Java demo和 regex demo .
模式匹配
-
<@
- 一个<@
子串 -
([WU][^>]*)
- 捕获第 1 组:-
[WU]
-W
或U
然后 -
[^>]*
- 与>
以外的 0+ 个字符匹配的否定字符类
-
-
>
- 一个>
字符。
如果W
后面只能有数字或 U
, 替换 [^>]*
与 [0-9]*
.
如果@
之后可以有任何ASCII 大写字符, 替换 [WU]
与 [A-Z]
.
关于java - 正则表达式:多次提取条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50737252/