使用正则表达式匹配分隔列表中的子字符串

用户名

我试图用Java编写一个正则表达式,以捕获用空格分隔的列表中的多个字符串。这是我想从中捕获的字符串...

String output = "regulations { qux def } standards none rules { abc-123 456-defghi wxyz_678  } security { enabled }";

我想使用正则表达式匹配紧跟在方括号之间的空格分隔列表中的每个单词rules换句话说,我想正则表达式匹配abc-123456-defghiwxyz_678此列表中的这些子字符串可以包含除空格之外的任何字符,并且列表中可以有任意数量的子字符串;例如,我仅使用上面的3个示例进行说明。以下内容无效,因为我需要对其进行修改以使其能够多次匹配...

String regex = "rules\\s\\{\\s([^\\s]*)\\s\\}";
final Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(output);
while (matcher.find()) {
    System.out.println(matcher.group(1));
}

如何修改上述正则表达式以解决多个可能的匹配问题并获得以下输出?

abc-123
456-defghi
wxyz_678
维克多·史翠比维

这是一种1步方法:使用1个正则表达式“全部匹配”。

正则表达式

(?:\brules\s+\{|(?!^)\G)\s+([\w-]+)

正则表达式匹配一个完整的单词,rules后跟1个或多个空格符号,如果它找到1个或多个空格,后跟1个或多个字母数字符号或连字符的序列,则它也将在最后一次成功匹配后立即匹配。这个词rules在这里对我们来说是一种界限。

Java代码

String output = "regulations { qux def } standards none rules { abc-123 456-defghi wxyz_678  } security { enabled }"; 
String regex = "(?:\\brules\\s+\\{|(?!^)\\G)\\s+([\\w-]+)";
final Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(output);
while (matcher.find()) {
    System.out.println(matcher.group(1));
}

这里是一个两步骤的方法:1)得到的子串rules {},2)分裂有空白。

String output = "regulations { qux def } standards none rules { abc-123 456-defghi wxyz_678  } security { enabled }"; 
String subst = output.replaceFirst("(?s)^.*\\brules\\s*[{]\\s*([^{}]+)[}].*$", "$1");
String[] res = subst.split("\\s+");
System.out.println(Arrays.toString(res));

请参阅IDEONE演示regex演示

正则表达式要简单得多,它只匹配包括在内的所有内容rules {,然后捕获内的内容{...},然后匹配}其余的字符串。通过反向引用,$1我们可以将此组1的值恢复为subst变量。然后分开。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

正则表达式以匹配包含以点分隔的子字符串的字符串

来自分类Dev

正则表达式逗号分隔字符串中的子字符串

来自分类Dev

Java中的首次匹配之前使用正则表达式的子字符串

来自分类Dev

正则表达式匹配最多由N个单词分隔的子字符串

来自分类Dev

使用正则表达式从python中的列表项中删除子字符串

来自分类Dev

正则表达式,匹配字符串中的子字符串

来自分类Dev

使用正则表达式使用分隔符列表拆分字符串的问题

来自分类Dev

正则表达式:如何匹配不以前缀列表开头的子字符串

来自分类Dev

使用正则表达式匹配字符串?

来自分类Dev

使用正则表达式匹配字符串?

来自分类Dev

仅当子字符串中不包含空格时,才使用正则表达式进行分隔

来自分类Dev

使用正则表达式从字符串中获取子字符串

来自分类Dev

使用正则表达式搜索字符串中的子字符串

来自分类Dev

使用正则表达式顺序匹配正则表达式,而不是JavaScript中的字符串顺序

来自分类Dev

mysql中的子字符串正则表达式匹配

来自分类Dev

最大化正则表达式中的子字符串匹配

来自分类Dev

忽略正则表达式匹配中的子字符串

来自分类Dev

用正则表达式替换匹配项中的子字符串

来自分类Dev

Java中的首次匹配之前具有正则表达式的子字符串

来自分类Dev

在Python中删除与正则表达式不匹配的子字符串

来自分类Dev

匹配文件名而不是python正则表达式中的子字符串

来自分类Dev

使用正则表达式匹配Laravel路由中的子字符串

来自分类Dev

使用C ++用正则表达式替换子字符串匹配

来自分类Dev

正则表达式以匹配列表中的各种字符串

来自分类Dev

如果列表中的任何字符串与正则表达式匹配

来自分类Dev

正则表达式以匹配列表中的各种字符串

来自分类Dev

如何使用正则表达式从列表中提取字符串匹配项?

来自分类Dev

使用正则表达式提取子字符串,但是如果字符串与正则表达式不匹配,则保留它

来自分类Dev

使用正则表达式(Oracle)从竖线分隔的字符串中获取值

Related 相关文章

  1. 1

    正则表达式以匹配包含以点分隔的子字符串的字符串

  2. 2

    正则表达式逗号分隔字符串中的子字符串

  3. 3

    Java中的首次匹配之前使用正则表达式的子字符串

  4. 4

    正则表达式匹配最多由N个单词分隔的子字符串

  5. 5

    使用正则表达式从python中的列表项中删除子字符串

  6. 6

    正则表达式,匹配字符串中的子字符串

  7. 7

    使用正则表达式使用分隔符列表拆分字符串的问题

  8. 8

    正则表达式:如何匹配不以前缀列表开头的子字符串

  9. 9

    使用正则表达式匹配字符串?

  10. 10

    使用正则表达式匹配字符串?

  11. 11

    仅当子字符串中不包含空格时,才使用正则表达式进行分隔

  12. 12

    使用正则表达式从字符串中获取子字符串

  13. 13

    使用正则表达式搜索字符串中的子字符串

  14. 14

    使用正则表达式顺序匹配正则表达式,而不是JavaScript中的字符串顺序

  15. 15

    mysql中的子字符串正则表达式匹配

  16. 16

    最大化正则表达式中的子字符串匹配

  17. 17

    忽略正则表达式匹配中的子字符串

  18. 18

    用正则表达式替换匹配项中的子字符串

  19. 19

    Java中的首次匹配之前具有正则表达式的子字符串

  20. 20

    在Python中删除与正则表达式不匹配的子字符串

  21. 21

    匹配文件名而不是python正则表达式中的子字符串

  22. 22

    使用正则表达式匹配Laravel路由中的子字符串

  23. 23

    使用C ++用正则表达式替换子字符串匹配

  24. 24

    正则表达式以匹配列表中的各种字符串

  25. 25

    如果列表中的任何字符串与正则表达式匹配

  26. 26

    正则表达式以匹配列表中的各种字符串

  27. 27

    如何使用正则表达式从列表中提取字符串匹配项?

  28. 28

    使用正则表达式提取子字符串,但是如果字符串与正则表达式不匹配,则保留它

  29. 29

    使用正则表达式(Oracle)从竖线分隔的字符串中获取值

热门标签

归档