使用正则表达式在java中进行模式匹配

时间:2010-11-16 13:48:45

标签: java regex

我正在寻找一种模式,使用正则表达式在Java中匹配此"LA5@10.232.140.133@Po6"和另外一个"LA5@10.232.140.133@Port-channel7"表达式。

就像我们有\ d {1,3}。\ d {1,3}。\ d {1,3}。\ d {1,3}进行IP地址验证。

我们可以拥有如下图案吗?请建议 -

[a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9]@\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}@Po\d[1-9]
[a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9]@\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}@Port-channel\d[1-9]

提前致谢。

==============================

在我的节目中,

import java.util.regex.*;
class ptternmatch {
    public static void main(String [] args) {
        Pattern p = Pattern.compile("\\w\\w\\w@\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}@*");
        Matcher m = p.matcher("LA5@10.232.140.133@Port-channel7");
        boolean b = false;
        System.out.println("Pattern is " + m.pattern());
        while(b = m.find()) {
            System.out.println(m.start() + " " + m.group());
    }
    }
}

但是我的模式会出现编译错误.-->转义序列无效 序列将类似于 - > 3个字母的数字n字母@ ipaddress @ some text ..

2 个答案:

答案 0 :(得分:1)

好吧,如果你想验证IP地址,那么你需要比\d{1,3}更多的东西。另外,请记住,对于Java字符串文字,您需要使用\转义\\,这样您最终会在实际正则表达式中使用单个反斜杠来转义某个字符,例如句点({{ 1}})。

假设.位是静态的,并且您可以使用LA5@Po后面跟一个数字,那么您可能需要这些行的正则表达式:

Port-channel

(包围可能不好,我的道歉)

答案 1 :(得分:0)

您可以执行类似matcher.find()的操作,如果属实,则可以执行捕获信息的组。看看这里的教程:

您需要将必要的部分包装在括号中 - 例如(\d{1,3})。如果你包装全部4个,你将有4个组可以访问。

另外,请看一下本教程

这是一个非常好的教程,我想这个可以解释你的大部分问题。

匹配你的第二个字符串:

  • LA5 @ 10.232.140.133 @端口channel7

你可以使用类似的东西:

\w{2}\d@\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}@[a-zA-Z\-]+\d

这取决于你想做什么,所以正则表达式可能会改变。

相关问题