java - 获取字符串中的字符串

标签 java regex

我的问题很简单。对于那些熟悉 RegEx 的人来说很简单,不幸的是,我不是。 所以,请帮我解决这个问题。

我有 String。比方说,“java @aa@ test @bbb@”。 如果我需要的唯一匹配项是:

1. @aa@
2. @bbb@

我试过这个表达式 (@(.*)@) 但结果是:

1. "@aa@ bang @bb@
2. aa@ bang @bb

这离我需要的太远了。

附言 另外,我不希望在这两个 @ 符号中匹配 @@ 或空字符串。

最佳答案

我认为最好的选择是

@[^@]+@

看起来像:

Regular expression visualization

Debuggex Demo

可以也使用非贪婪的.+?,但是当您的定界符只是一个字符时(在本例中为@ ) 你通常应该更喜欢否定字符类方法。

顺便说一句,学习正则表达式的好资源是 regular-expressions.info .它从最基本的开始,一直到最高级的。如果您有兴趣了解有关正则表达式的更多信息,我强烈建议您浏览一下。当然还有 Java 专用的 Oracle lesson on regular expressions还有;两者都很棒。


String str = "java @aa@ test @bbb@";

Matcher m = Pattern.compile("@[^@]+@").matcher(str);
while (m.find())
    System.out.println(m.group());
@aa@
@bbb@

关于java - 获取字符串中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19335825/

相关文章:

java - 在 Android 中使用 JSON 数据的 ContentAdapter

java - 编写未知长度的Wav文件(Java)

java - 为什么表达式 `(true) ? null: null` 被视为 char[]

regex - 我怎样才能匹配所有没有用所需的 LaTeX 标记标记的短语?

java - 正则表达式匹配非匹配组

regex - 如何在 PostgreSQL 中将包含数值的字符串拆分为三部分?

java - 从 HDFS 加载 key 表

java/lang/NoClassDefFoundError : java/lang/invoke/MethodHandle eclipse juno 错误

javascript - 用正则表达式提取部分SQL语句

c++ - 仅提取正则表达式的特定部分 'expression'