Java regex Matcher.end()未返回所需索引
我不熟悉Java中的正则表达式,希望编写一个正则表达式来匹配特定的模式,并在匹配后立即获得下一个索引。我编写了以下代码:Java regex Matcher.end()未返回所需索引,java,regex,Java,Regex,我不熟悉Java中的正则表达式,希望编写一个正则表达式来匹配特定的模式,并在匹配后立即获得下一个索引。我编写了以下代码: temp = "contains(text(),\"something\")]" String pattern = "^contains\\(text\\(\\),\"(.*)\"\\)"; Pattern r = Pattern.compile(pattern); Matcher m = r.matcher(temp); if(m.find()) { valu
temp = "contains(text(),\"something\")]"
String pattern = "^contains\\(text\\(\\),\"(.*)\"\\)";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(temp);
if(m.find())
{
value = m.group(0);
type = CONTAINS;
pointer = m.end();
//System.out.println(m.group(1));
}
在此之后,指针超出范围。请注意,我提供的正则表达式模式在
)
处结束,因此我希望指针的索引为]
,但事实并非如此。我在这里遗漏了什么?您可能算错了您期望的]
位置。请记住,引号的转义\
s不起作用,因为它们在生成字符串时消失
这里有一些东西证明它可以找到]
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Regex {
public static void main(String[] args) throws Exception
{
String temp = "contains(text(),\"something\")]";
String pattern = "^contains\\(text\\(\\),\"(.*)\"\\)";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(temp);
if(m.find())
{
String value = m.group(0);
System.out.println(value+" <-- value"); //TODO remove debugging code
// type = CONTAINS; //<- no idea what this was for
int pointer = m.end();
System.out.println(pointer+" <-- pointer"); //TODO remove debugging code
System.out.println(m.group(1)+" <-- m.group(1)");
System.out.println(temp.substring(pointer, pointer+1)
+" <-- temp.substring(pointer, pointer+1)"); //TODO remove debugging code
}
}
}
import java.util.regex.Matcher;
导入java.util.regex.Pattern;
公共类正则表达式{
公共静态void main(字符串[]args)引发异常
{
字符串temp=“contains(text(),\“something\”)”;
字符串模式=“^包含\(文本\(\\),\”(.*)\“\)”;
Pattern r=Pattern.compile(Pattern);
匹配器m=r匹配器(温度);
if(m.find())
{
字符串值=m.group(0);
System.out.println(value+“粘贴到此处时出现空格。我的实际代码中没有空格。无论如何,谢谢。@user3138572这是您需要的吗?是的。我想我是做错了什么。现在已解决。谢谢。
contains(text(), "something") <-- value
28 <-- pointer
something <-- m.group(1)
] <-- temp.substring(pointer, pointer+1)