我是Java的新手,我刚刚开始使用RegEx,我想知道哪种方法可以检查是否有一个文本作为输入,是否找到了某个正则表达式,并且它是有效的。 我会做一个例子。
我已将此文本文件作为输入:
Derpity64_1 64 3 6 1
HerpDerp32 1 6 3 0 26
HurrDurr16 2 5 7 7 78
现在,与我相关的部分是HerpDerp32。 在确保文本文件包含HerpDerp字符串之后,我想确保HerpDerp之后的数字(本例中为32)是16,32或64.
我该如何继续?如果我犯了任何错误/没有太好解释,我很抱歉。
答案 0 :(得分:0)
这里不需要正则表达式......
您所要做的就是遍历文件(一次读取一行)。
找到以搜索字词开头的行后,只需检查字词后面的字符。
您可以使用String.substring()检查HerpDerp之后的字符。
如果你要使用java,你也可以习惯阅读API文档。
这里是page with the String functions。您将使用很多。
http://docs.oracle.com/javase/6/docs/api/java/lang/String.html
这里是documentation for the FileReader class,在这里也会有所帮助。
答案 1 :(得分:0)
你真的必须使用正则表达式吗? Jahroy提出了更快的建议
String[] data = { "Derpity64_1 64 3 6 1", "HerpDerp32 1 6 3 0 26",
"HurrDurr16 2 5 7 7 78" };
for(String s:data){//iterate over all Strings in 'data' array
if (s.startsWith("HerpDerp"))//check if tested string starts with HerpDerp
//HerpDerp32 1 6 3 0 26
// ^^
//0123456789
//show only chars from 8 till 9 index
System.out.println(s.substring(8,10));//(10 is excluded)
}
编辑:
我不确定这是否是您正在寻找的内容,因为它是基于您的原始问题,但请尝试使用您的数据和正则表达式。
String[] data = { "Derpity64_1 64 3 6 1", "HerpDerp32 1 6 3 0 26",
"HurrDurr16 2 5 7 7 78" };
Pattern p=Pattern.compile("^HerpDerp(\\d*)");
for (String s : data) {
Matcher m=p.matcher(s);
if(m.find())
System.out.println(m.group(1));
//group(1) will return content from first bracket in regex
}