[英]pattern matching in java using regular expression
我正在尋找一種使用正則表達式匹配"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 @一些文本的單詞。
好吧,如果您想驗證IP地址,那么您需要比\\d{1,3}
多一些的東西。 另外,請記住,對於Java字符串文字,您需要使用\\\\
轉義\\
,因此最終在實際的正則表達式中使用單個反斜杠來轉義諸如句點( .
)的字符。
假設LA5@
位是靜態的,並且您可以使用Po
或Port-channel
,然后在末尾添加一個數字,那么您可能需要以下正則表達式:
LA5@(((2((5[0-5])|([0-4][0-9])))|(1[0-9]{2})|([1-9][0-9]?)\\.){3}(2(5[0-5]|[0-4][0-9]))|(1[0-9]{2})|([1-9][0-9]?)@Po(rt-channel)?[1-9]
(對不起,請稍等,抱歉)
您可以執行matcher.find()
類的matcher.find()
,如果為true,則可以執行組以捕獲信息。 在這里看看教程:
您需要將必要的部分包裝在int括號中-例如(\\d{1,3})
。 如果將所有4個都打包,則將有4個組可以訪問。
另外,請看一下本教程
這是一個很好的教程,我認為這將解釋您的大多數問題。
匹配第二個字符串:
您可以使用類似:
\w{2}\d@\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}@[a-zA-Z\-]+\d
這取決於您要執行的操作,因此正則表達式可能會更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.