[英]How to match an enclosing substring using regex in .NET
我正在嘗試在id=resultsStats>*<nobr>
中匹配*
以提取中間位。 這將匹配例如id=resultsStats>3<nobr>
id=resultsStats>anything<nobr>
所以我可以提取中間的“3”或“任何東西”我如何在 .NET 正則表達式或其他方式中執行此操作?
(?<=id=resultsStats>).+?(?=<nobr>)
如果內容是可選的而不是必需的,則使用*
而不是+
。
使用示例(F#):
open System.Text.RegularExpressions
let tryFindResultsStats input =
let m = Regex.Match (input,
"(?<=id=resultsStats>).+?(?=<nobr>)",
RegexOptions.Singleline)
if m.Success then Some m.Value else None
我不是正則表達式專家,但這樣的事情可能會奏效:
@"\>\*{1}\<"
這意味着“匹配 lt/gt 字符之間的單個星號”。 您只需要確保您避開星號,因為它在正則表達式中具有特殊含義。
希望這可以幫助!
如果您要捕獲*
,則需要使用反斜杠對其進行轉義。 請注意,如果您在字符串中執行此操作,那么轉義反斜杠也是最安全的(盡管從技術上講\*
無效並且可以工作)
"\\*"
嘗試這個:
using System;
using System.Text.RegularExpressions;
namespace SO6312611
{
class Program
{
static void Main()
{
string input = "id=resultsStats>anything<nobr>";
Regex r = new Regex("id=resultsStats>(?<data>[^<]*)<nobr>");
Match m = r.Match(input);
Console.WriteLine("Matched: >{0}<", m.Groups["data"]);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.