繁体   English   中英

如何使用正则表达式从 INI 文件中提取特定值?

[英]How to extract a particular value from an INI File using a Regular Expression?

我有点困惑如何最好地使用正则表达式,希望能得到一些帮助,我想从 INI 文件中提取 URL 值,如下所示:

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

因此,我可以从正则表达式中获取 URL 值作为唯一匹配项 - 但我对它们的了解还不够(还)无法做到这一点。
我已经看到 RegEx 示例将解析任何 INI 文件并获取名称、值对我只想从文件中获取 URL 值,无论它包含什么。
我的目标是有这样的东西:

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

这看起来很简单,但我似乎无法创建一个特定的案例 RegEx,我希望从“URL =”到最后的 vbCrLf 的所有内容都是我的“匹配”。
我曾参考过 Regular-Expressions.info ,它以前一直是一个帮助,但仍然无法让这个简单的例子工作。

像这样:

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

请注意,这将匹配任何URL=行,无论它位于哪个部分。
如果那不是你想要的,请告诉我。

编辑:它实际上应该是.Groups[ 1 ].Value 这将不包括URL=

下面的正则表达式匹配 parameterName 和等号后一行的值。 忽略 parameterName 和 value 之外的所有空格和制表符。 空格后跟分号开始行内注释。

var parameterName = "URL";

var regex = new Regex(
    pattern: $@"^[ \t]*{parameterName}[ \t]*=(?:(?:[ \t]+;.*)|(?:[ \t]*(\S.*?)(?:(?: ;.*)|(?:[ \t]+))?))$",
    RegexOptions.Multiline | RegexOptions.IgnoreCase);

var value = regex.Match(_iniContent).Groups[1].Value;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM