簡體   English   中英

需要正則表達式來匹配給定的字符串

[英]Need regex to match the given string

我需要一個正則表達式來匹配特定的字符串,在下面的字符串中說1.4.5 我的弦會像

absdfsdfsdfc1.4.5kdecsdfsdff 

我有一個正則表達式給出[c1.4.5k]作為輸出。 但是我只想匹配1.4.5 我已經嘗試過這種模式:

[^\\W](\\d\\.\\d\\.\\d)[^\\d] 

但是沒有運氣。 我正在使用Java。 請讓我知道模式。

當我正確閱讀您的表達式[^\\\\W](\\\\d\\\\.\\\\d\\\\.\\\\d)[^\\\\d]時,您想要的是前面的文字字符而不是前面的數字。 那是對的嗎?

為此,您可以使用lookbehind和lookahead斷言 這些斷言僅檢查其條件,但不匹配,因此結果中不包含任何內容。

(?<=\\w)(\\d\\.\\d\\.\\d)(?!\\d)

因此,您可以刪除捕獲組。 您還在模式中重復自己,也可以簡化它:

(?<=\\w)\\d(?:\\.\\d){2}(?!\\d)

這將是我的模式。 ?:是一個非捕獲組)

我認為這應該做到: ([0-9]+\\\\.?)+

正則表達式

((?<!\d)\d(?:\.\d(?!\d))+)

作為Java字符串:

"((?<!\\d)\\d(?:\\.\\d(?!\\d))+)"

您的要求含糊不清。 您是否需要將三個正整數與兩個正點匹配?

[0-9]+\.[0-9]+\.[0-9]+

可以寫成

([0-9]+\.){2}[0-9]+

您是否需要匹配x個數字的許多情況,中間用x-1個點分隔?

([0-9]+\.)+[0-9]+

使用向前看和向后看。

(?<=c)[\d\.]+(?=k)

其中c是緊接1.4.5之前的字符,k是緊接1.4.5之后的字符。 您可以使用任何適合您目的的正則表達式替換c和k

String str= "absdfsdfsdfc**1.4.5**kdec456456.567sdfsdff22.33.55ffkidhfuh122.33.44"; 
String regex ="[0-9]{1}\\.[0-9]{1}\\.[0-9]{1}";  
Matcher matcher = Pattern.compile( regex ).matcher( str);                    
if (matcher.find())
{
String year = matcher.group(0);

System.out.println(year);
}
else
{
    System.out.println("no match found");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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