我正在寻找一种模式,使用正则表达式在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 ..
答案 0 :(得分:1)
好吧,如果你想验证IP地址,那么你需要比\d{1,3}
更多的东西。另外,请记住,对于Java字符串文字,您需要使用\
转义\\
,这样您最终会在实际正则表达式中使用单个反斜杠来转义某个字符,例如句点({{ 1}})。
假设.
位是静态的,并且您可以使用LA5@
或Po
后面跟一个数字,那么您可能需要这些行的正则表达式:
Port-channel
(包围可能不好,我的道歉)
答案 1 :(得分:0)
您可以执行类似matcher.find()
的操作,如果属实,则可以执行捕获信息的组。看看这里的教程:
您需要将必要的部分包装在括号中 - 例如(\d{1,3})
。如果你包装全部4个,你将有4个组可以访问。
另外,请看一下本教程
这是一个非常好的教程,我想这个可以解释你的大部分问题。
匹配你的第二个字符串:
你可以使用类似的东西:
\w{2}\d@\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}@[a-zA-Z\-]+\d
这取决于你想做什么,所以正则表达式可能会改变。