簡體   English   中英

在C#中使用正則表達式提取字符串

[英]Extract string with regex in C#

我在C#中有此字符串:“ / 19 / Ora01”,我想吸引“ Ora01”

我嘗試沒有成功:

var pattern = @"^(Ora[0-9]{2})$";

var match = Regex.Match(args.Path, pattern);

var hour = match.Groups[0].Value;

我做錯了什么?

怎樣吸引另外兩個字符串,一個帶有19,另一個帶有Ora01?

如果您將/ Split() / Split() /如果字符串為/19/Ora01模式,該/19/Ora01

var data = "/19/Ora01".Split("/", StringSplitOptions.RemoveEmptyEntries);

這是正則表達式要的:

public static void Main(string[] args)
  {
    string pattern = "\\/(.*?)\\/(.+)";
    string text = "/19/Ora01";
    Match match = Regex.Match(text, pattern);
    string first = match.Groups[1].Value;
    string second = match.Groups[2].Value;

    Console.WriteLine(first);
    Console.WriteLine(second);

    Console.ReadLine();
  }

還考慮拉胡爾提供的答案。

^表示“字符串的開頭”,“ $”表示“字符串的結尾。”您要求的內容僅包含Ora后跟兩位數字。至少刪除^。您也不需要分組Ora[0-9]{2}應該工作:

var pattern = @"Ora[0-9]{2}";

var match = Regex.Match("/19/Ora01", pattern);

var hour = match.Groups[0].Value;
hour.Dump();

打印Ora01

如果您想要在Ora之后的小時部分,則必須將數字分組:

var pattern = @"Ora(?<hour>[0-9]{2})";

var match = Regex.Match("/19/Ora01", pattern);

var hour = match.Groups["hour"].Value;
Console.WriteLine(hour);

打印:

01

您無需說明要執行哪種驗證,例如,斜杠是否重要,是否應存在19斜杠,例如將其視為一年。

如果要確保字符串遵循此格式並且第一部分是兩位數字,則可以使用例如@"/(?<year>\\d{2})/Ora(?<hour>\\d{2})"

var pattern = @"/(?<year>\d{2})/Ora(?<hour>\d{2})";

var match = Regex.Match("/19/Ora01", pattern);

var hour = match.Groups["hour"].Value;
var year = match.Groups["year"].Value;
Console.WriteLine($"{year} {hour}");

打印:

19 01

僅當格式正確時。

在正則表達式中, ^表示從字符串開頭開始匹配。

就像$表示匹配到字符串的結尾。

只需從您的模式中刪除^ ,您的代碼就可以工作。

正則表達式是執行此操作的最佳方法:

string pattern = "\\/(.*?)\\/(.+)";
string text = "/19/Ora01";
Match match = Regex.Match(text, pattern);
string first = match.Groups[1].Value;
string second = match.Groups[2].Value;

Console.WriteLine(first);
Console.WriteLine(second);

另外,@ Panagiotis Kanavos可能是最好的答案,也是最完整的答案。

您也可以使用string.Split。 可能比regex更快,但要取決於您的需求。

使用string.Split可能看起來像

var result = start.Substring(start.LastIndexOf("/") + 1);

如果要使用正則表達式,則必須刪除“ ^”。 為便於測試和更多信息,請訪問regexr.com。

暫無
暫無

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

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