确定是否在文本文件中找到某个正则表达式(Java)

时间:2012-06-12 23:53:01

标签: java regex string text

我是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.

我该如何继续?如果我犯了任何错误/没有太好解释,我很抱歉。

2 个答案:

答案 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
}