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

标签 java regex

考虑我有一个像这样的字符串:

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 demoregex demo .

模式匹配

  • <@ - 一个 <@子串
  • ([WU][^>]*) - 捕获第 1 组:
    • [WU] - WU然后
    • [^>]* - 与 > 以外的 0+ 个字符匹配的否定字符类
  • > - 一个 >字符。

如果W后面只能有数字或 U , 替换 [^>]*[0-9]* .

如果@ 之后可以有任何ASCII 大写字符, 替换 [WU][A-Z] .

关于java - 正则表达式:多次提取条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50737252/

相关文章:

regex - 跨多行替换两个单词之间的文件文本

java - 为什么此标记生成器返回不正确的值?

Java - 你可以从 1 个 java 类写入 2 个文件吗?

java - 如何在不创建包装类的情况下在 POST 方法中填充多个 @ModelAttribute?

java - 访问 jList/listModel 中对象的元素

java - spring集成模式 validator 的使用?

Java - 连接到 Linux 上的 SQL Server 数据库

Java 正则表达式 - 试图从以特定字符串开头的行中分离出文本?

python - 解析 git - 使用 python 的日志文件

c# - 按价格排序列表 C#