2009-12-22 9 views
0

Je suis un peu confus comment mieux utiliser une expression régulière et espère que je peux obtenir de l'aide que je veux extraire une valeur d'URL à partir d'un fichier INI en tant que tel:Comment extraire une valeur particulière d'un fichier INI en utilisant une expression régulière?

[DEFAULT] 
BASEURL=http://www.stackoverflow.com/ 
[InternetShortcut] 
URL=http://www.stackoverflow.com/ 

Je peux donc obtenir la valeur URL aussi le seul match de l'expression régulière - mais je ne comprends pas assez à leur sujet (encore) pour le faire.
J'ai vu des exemples RegEx qui vont analyser un fichier INI et obtenir le nom, Value Pairs Je veux juste obtenir la valeur de l'URL seulement à partir d'un fichier, peu importe ce qu'il contient d'autre.
Mon but est d'avoir quelque chose comme ceci:

Dim _pattern As New Text.RegularExpressions.Regex("RegEx") 
Dim _url As String = _pattern.Match(iniContentString).Value 

Il semble simple, mais je ne peux pas sembler créer un RegEx de cas précis où je veux tout de « URL = » à la vbCrLf à la fin de mon " Rencontre".
Je me suis référé à Regular-Expressions.info qui a été une aide avant mais ne peut toujours pas obtenir cet exemple simple pour fonctionner.

+2

Question muette, mais y a-t-il une raison pour laquelle vous n'utilisez pas "GetPrivateProfileString"? Cela fait exactement ce que vous essayez de faire http://msdn.microsoft.com/en-us/library/ms724353(VS.85).aspx –

+0

Cela nécessite P/Invoke. – SLaks

+1

De plus, quelle expression regex utilisez-vous? c'est-à-dire ce qui apparaît lorsque vous avez "Regex" dans Regex ("RegEx") –

Répondre

1

Comme ceci:

New Regex("^URL=(.*)$", RegexOptions.Multiline).Match(iniContent).Groups[1].Value 

Notez que cela correspond toute ligne URL=, quelle que soit la section, il est en
Si ce n'est pas ce que vous voulez, s'il vous plaît me dire..

EDIT: Il devrait en fait être .Groups[1].Value; ceci n'inclura pas URL=.

+0

Cela ressemble plus à ce dont j'avais besoin, je ne les ai jamais utilisés que pour des caractères pas des chaînes entières. Cela fonctionne mais j'obtiens toujours la partie "URL =" - cela pourrait-il être exclu, sinon je vais utiliser une chaîne de remplacement pour m'en débarrasser et marquer comme réponse. – RoguePlanetoid

+0

Merci pour l'édition, l'URL et le match sont deux groupes séparés - je me suis toujours demandé s'il y avait une partie "retournée" d'un RegEx. Je ne le savais pas, ça marche maintenant! – RoguePlanetoid

Questions connexes