考虑我有一个像这样的字符串:
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]
Run Code Online (Sandbox Code Playgroud)
模式匹配
<@- 一个<@子串([WU][^>]*)- 捕获组 1:
[WU]-W或U然后[^>]*- 否定字符类匹配 0+ 字符以外的字符> >- 一个>字符。W如果或后面只能是数字U,则替换[^>]*为[0-9]*。
如果 后面可以有任何 ASCII 大写字符@,则替换[WU]为[A-Z]。
| 归档时间: |
|
| 查看次数: |
166 次 |
| 最近记录: |