簡體   English   中英

使用正則表達式在Java中進行模式匹配

[英]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@位是靜態的,並且您可以使用PoPort-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個組可以訪問。

另外,請看一下本教程

這是一個很好的教程,我認為這將解釋您的大多數問題。

匹配第二個字符串:

  • LA5 @ 10.232.140.133 @ Port-channel7

您可以使用類似:

\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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM