两个标志之间的正则表达文本

时间:2014-09-14 06:31:01

标签: java regex

我有一个文本,我想用适当的值替换变量,我的变量位于两个@之间。当我使用[/(?m)@.*?@/]获取这些文本时,它也会在第一个和最后一个@之前和之后返回文本。我怎么才能在这两个@符号之间得到文本。提前致谢。 我在Java中使用String.split("")方法。 例如,我想使用以下字符串:

  

这是最好的@可能的方式@ t @ o做结果!!!

我希望得到这两个结果:

  

最好的

     

2 个答案:

答案 0 :(得分:1)

在Java中,您可以使用此正则表达式在第一个和第二个@ 之间获取值

String repl = input.replaceFirst("(?m)^[^@]*@([^@]*)@.*$" "$1");

要获取第一个和最后一个@ 之间的值:

String repl = input.replaceFirst("(?m)^[^@]*@(.*?)@[^@]*$" "$1");

要查找多个匹配项,请使用PatternMatcher

Pattern p = Pattern.compile("@([^@]*)@"):
Matcher m = p.matcher(p);
while (m.find()) {
     System.out.prinln(m.group(1));
}

RegEx Demo

答案 1 :(得分:1)

Split()是在这里使用的错误工具,请使用Matcher()方法来执行此操作。

String s  = "this is @the best@ possible way @t@o do result!!!";
Pattern p = Pattern.compile("@([^@]*)@");
Matcher m = p.matcher(s);
while (m.find()) {
  System.out.println(m.group(1));
}

输出

the best
t