簡體   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