我的问题很简单。对于那些熟悉 RegEx 的人来说很简单,不幸的是,我不是。 所以,请帮我解决这个问题。
我有 String
。比方说,“java @aa@ test @bbb@”
。
如果我需要的唯一匹配项是:
1. @aa@
2. @bbb@
我试过这个表达式 (@(.*)@)
但结果是:
1. "@aa@ bang @bb@
2. aa@ bang @bb
这离我需要的太远了。
附言 另外,我不希望在这两个 @ 符号中匹配 @@ 或空字符串。
最佳答案
我认为最好的选择是
@[^@]+@
看起来像:
您可以也使用非贪婪的.+?
,但是当您的定界符只是一个字符时(在本例中为@
) 你通常应该更喜欢否定字符类方法。
顺便说一句,学习正则表达式的好资源是 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/