所以我知道使用正則運算式來完成這個任務是要走的路,但是在使用它們時我已經非常糟糕了。
我有一個日志檔案,在檔案中會有很多這樣一行的實體:
資訊 Example.Services.Controllers.SubscribeController - EmployeeID的開始日志訂閱:jdoe RecordID:111222
日志檔案中還有很多其他的東西,比如堆疊跟蹤等等。
我想提取上面行的每個實體,但是我遇到了麻煩,因為“ EmployeeID ”和“ RecordID ”的值發生了變化。
uj5u.com熱心網友回復:
假設您的員工 id 只是小字符并且記錄 id 只是數字,那么匹配此行的正則運算式將是(INFO Example\.Services\.Controllers\.SubscribeController - Beginning Log Subscription for EmployeeID: [a-z] RecordID: [0-9]). 將您的正則運算式與您的測驗字串匹配的示例代碼是
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"(INFO Example\.Services\.Controllers\.SubscribeController - Beginning Log Subscription for EmployeeID: [a-z] RecordID: [0-9])";
string input = @"Test String";
RegexOptions options = RegexOptions.Multiline;
foreach (Match m in Regex.Matches(input, pattern, options))
{
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
}
}
}
如果您的員工 ID 和記錄 ID 有更多規則,那么您可以將它們添加到正則運算式中以對其進行微調。就像,如果記錄 id 正好是六個字符,而不是你的正則運算式(INFO Example\.Services\.Controllers\.SubscribeController - Beginning Log Subscription for EmployeeID: [a-z] RecordID: [0-9]{6})。如果您想為employeeid 添加20 個字符的條件而不是正則運算式(INFO Example\.Services\.Controllers\.SubscribeController - Beginning Log Subscription for EmployeeID: [a-z]{1,20} RecordID: [0-9]{6})。因此,Employee 可以是 1 到 20 個字符之間的任意位置。[a-zA-Z]如果它也包含大寫字母并且[a-zA-Z0-9]包含字母和數字,請寫
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/476111.html
上一篇:過濾串列違反開閉原則
下一篇:主機/設備的位元組序是什么?
