我有一个文本,我想用适当的值替换变量,我的变量位于两个@之间。当我使用[/(?m)@.*?@/]获取这些文本时,它也会在第一个和最后一个@之前和之后返回文本。我怎么才能在这两个@符号之间得到文本。提前致谢。 我在Java中使用String.split("")方法。 例如,我想使用以下字符串:
这是最好的@可能的方式@ t @ o做结果!!!
我希望得到这两个结果:
最好的
吨
答案 0 :(得分:1)
在Java中,您可以使用此正则表达式在第一个和第二个@
之间获取值:
String repl = input.replaceFirst("(?m)^[^@]*@([^@]*)@.*$" "$1");
要获取第一个和最后一个@
之间的值:
String repl = input.replaceFirst("(?m)^[^@]*@(.*?)@[^@]*$" "$1");
要查找多个匹配项,请使用Pattern
,Matcher
:
Pattern p = Pattern.compile("@([^@]*)@"):
Matcher m = p.matcher(p);
while (m.find()) {
System.out.prinln(m.group(1));
}
答案 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