Nejsem moc zdatný co se vymýšlení regulárních výrazů týče, vlastně bych počet jejich použití dokázal spočítat na prstech jedné ruky. Ale tenhle týden jsem opravdu urgentně potřeboval parsovat soubory Visual Studia (konkrétně
*.sln) a trochu je změnit (a nechtěl jsem se mordovat s COMáckým interfacem SDKčka k Visual Studiu).
Kód:
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ClrImageManager", "BfCore\ClrWrapper\ClrImageManager\ClrImageManager.vcxproj", "{0602669A-AB0D-410E-907C-98C03E6F7096}"
Neskutečně mi přišla vhod jedna on-line služba na tvorbu regulárních výrazů -
txt2re.com. Jednoduše vložíte "sample" řádky, kterou chcete parsovat (např. ta nahoře) a klikáním na jednotlivé její komponenty (např. číslo, řetězec, řetězec uzavřený v závorkách apod.) poskládáte výsledný výraz.
V mém případě (a po drobných ručních úpravách) vypadlo (komentáře a formátování je už moje dílo)
Kód:
Regex r=new Regex( "(Project\\(.*\\)\\s+=\\s+)" + // 'Project(<parent>) = '
"(\".*?\",\\s+)" + // '"<projectName>", '
"(\")(.*?)(\",\\s+)"+ // '"<projectFileName>", '
"(\")(.*?)(\")", // '"<projectGuid>"'
RegexOptions.IgnoreCase | RegexOptions.Singleline
);
txt2re.com - skvělá výpomoc!