簡體   English   中英

c#regex用於數字/數字/字符串模式

[英]c# regex for number/number/string pattern

我試圖找到{a number} / { a number } / {a string}模式。 我可以得到number / number ,但是當我添加/ string它沒有。

我想要找到的例子:

15/00969/FUL

我的正則表達式:

Regex reg = new Regex(@"\d/\d/\w");

你應該使用+ quantier ,意思是1 or more times ,它適用於量詞之前的模式,我會添加單詞邊界\\b只匹配整個單詞:

\b\d+/\d+/\w+\b

C#代碼(使用逐字字符串文字,這樣我們就可以從測試工具或服務中復制/粘貼正則表達式而不必轉義反斜杠):

var rx = new Regex(@"\b\d+/\d+/\w+\b");

如果要精確確定某些模式對應的字符數,可以使用{} s:

\b\d{2}/\d{5}/\w{3}\b

最后,如果字符串中 只有字母,則可以在C#中使用\\p{L} (或\\p{Lu}僅捕獲大寫字母)速記類:

\b\d{2}/\d{5}/\p{L}{3}\b

示例代碼(還包括使用非轉義()引入的捕獲組 ):

var rx = new Regex(@"\b(\d{2})/(\d{5})/(\p{L}{3})\b");
var res = rx.Matches("15/00969/FUL").OfType<Match>()
                       .Select(p => new
                       {
                           first_number = p.Groups[1].Value,
                           second_number = p.Groups[2].Value,
                           the_string = p.Groups[3].Value
                       }).ToList();

輸出:

在此輸入圖像描述

Regex reg = new Regex(@"\d+/\d+/\w+");

完整的例子:

Regex r = new Regex(@"(\d+)/(\d+)/(\w+)");

string input = "15/00969/FUL";
var m = r.Match(input);

if (m.Success)
{
    string a = m.Groups[1].Value;   // 15
    string b = m.Groups[2].Value;   // 00969
    string c = m.Groups[3].Value;   // FUL
}

您缺少正則表達式中的量詞

如果你想匹配一個或多個項目,你應該使用+ 如果您已經知道需要匹配的項目數,可以使用{x}{x,y}指定范圍( xy是兩個數字)

所以你的正則表達式會成為:

Regex reg = new Regex(@"\d/+\d+/\w+");

例如,如果您要匹配的所有元素都具有此格式( {2 digit}/{5 digit}/{3 letters} ),您可以寫:

Regex reg = new Regex(@"\d/{2}\d{5}/\w{3}");

這將匹配15/00969/FUL

有關正則表達式的更多信息,請點擊此處

bool match = new Regex(@"[\d]+[/][\d]+[/][\w]+").IsMatch("15/00969/FUL"); //true

正則表達式:

[\d]+ //one or more digits
[\w]+ //one or more alphanumeric characters
[/]   // '/'-character

暫無
暫無

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

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