C# Parsing Keyword lines for output -
we attempting create alter log of microsoft kbase updates applying during out normal maintenance cycles. want parse info below particular lines. sample below:
operation : 1 resultcode : 2 hresult : 0 date : 10/7/2014 10:27:50 updateidentity : system.__comobject title : update microsoft silverlight (kb2977218) description : update silverlight improves security, reliability, accessibility support, startup performance, enhances line-of-business back upwards , includes several fixes improve back upwards rich net applications. update backward compatible web applications built using previous versions of silverlight. unmappedresultcode : 0 clientapplicationid : automaticupdates serverselection : 1 serviceid : uninstallationsteps : system.__comobject uninstallationnotes : supporturl : http://go.microsoft.com/fwlink/?linkid=105787 categories : system.__comobject
our desired output is:
title : update microsoft silverlight (kb2977218) date : 10/7/2014 10:27:50 description : update silverlight improves security, reliability, accessibility support, startup performance, enhances line-of-business back upwards , includes several fixes improve back upwards rich net applications. update backward compatible web applications built using previous versions of silverlight.
i trying write simple c# application paste raw info rich text box click button , have desired output in rich text box. there pattern of "keyword : data" might useful.
i have form created , elements on form. have attempted find method search keyword not yield result seek. want keyword or line speak , can see description multiple lines.
i don't have sample code post don't know begin given task. sample code helpful accomplish task.
you can seek next regex
pattern:
(?<=\b[keyword]\b\s*:\s*).*
simply replace [keyword]
actual keyword you're looking for. illustration (?<=\btitle\b\s*:\s*).*
homecoming update microsoft silverlight (kb2977218)
. here's how you'd utilize in code:
private string getdatafromkeyword(string source, string keyword) { homecoming regex.match(source, string.format(@"(?<=\b{0}\b\s*:\s*).*", keyword)).value.trim(); }
and phone call like:
string info = getdatafromkeyword(textbox.text, "title");
explanation of pattern:
(?<=)
: notation positive look-behind.
\b[keyword]\b\s*:\s*
: matches entire word [keyword]
followed number of spaces followed :
followed number of spaces.
.*
: matches after behind, data
in keyword: data
pair.
if have multiple instances of given keyword, can utilize matches()
method instead of match()
:
private ienumerable<string> getdatafromkeyword(string source, string keyword) { homecoming regex.matches(source, string.format(@"(?<=\b{0}\b\s*:\s*).*", keyword)) .cast<match>().select(match => match.value.trim()); }
now var info = getdatafromkeyword(textbox.text, "title");
returns list of matches can enumerate through:
var titles = getdatafromkeyword(textbox.text, "title").toarray(); var dates = getdatafromkeyword(textbox.text, "date").toarray(); var descriptions = getdatafromkeyword(textbox.text, "description").toarray(); (int = 0; < titles.count(); i++) { string block = string.format("title: {0}, date: {1}, description: {2}", titles[i], dates[i], descriptions[i]); messagebox.show(string.format("block {0}: {1}", i+1, block)); }
note assume have same number of title
, date
, , description
entries. i'm not sure requirements are, illustration of iterating on lists. alter based on needs.
c# parsing richtextbox
No comments:
Post a Comment