[英]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.