使用RegEx和c#从文本中提取变量
本文关键字:提取 变量 文本 RegEx 使用 | 更新日期: 2023-09-27 18:11:35
我前面可能有一个简单的任务,但我的RegEx技能很差。有谁能帮我,或者给我指个方向吗?: -)
我正在解析的示例文本,我想在结果上做一个foreach,我可以得到变量"URL"和两者之间的文本:
[URL=/test.aspx?]ID = 12345] loremipsum[/URL] adipiscing。Nullam interdum eleifend mauris, nec调味品是一种很好的调味品。Mauris faucibus, orciac [URL =/default . aspx ?ID=222222]lorem[/URL] conallis volutpat, dolor自由的求索,自由的求索奥利奇[URL =/default . aspx ?ID=333333]lorem ipsum dolor[/URL] quis augue。整数nec euismod sem.
这个应该可以帮你:
Regex theRegex = new Regex(@"'[URL=([^']]+)']([^'[]+)'[/URL']");
string text = "Lorem ipsum dolor sit amet, consectetur[URL=/test.aspx?ID=12345]lorem ipsum[/URL] adipiscing elit. Nullam interdum eleifend mauris, nec condimentum nisi lacinia sit amet. Mauris faucibus, orci ac[URL=/Default.aspx?ID=222222]lorem[/URL] convallis volutpat, dolor libero sollicitudin quam, id feugiat magna orci[URL=/Default.aspx?ID=333333]lorem ipsum dolor[/URL] quis augue. Integer nec euismod sem.";
MatchCollection matches = theRegex.Matches(text);
foreach (Match thisMatch in matches)
{
// thisMatch.Groups[0].Value is e.g. "[URL=/test.aspx?ID=12345]lorem ipsum[/URL]"
// thisMatch.Groups[1].Value is e.g. "/test.aspx?ID=12345"
// thisMatch.Groups[2].Value is e.g. "lorem ipsum"
}
如果您的文本看起来完全像这样,则这种事情将起作用,即:你没有嵌套的url,你的URL
标签都是大写的
"'[URL=([^']]*)']([^'[]*')'[/URL']"
这应该捕获两组:1 = URL=
之后的东西,2 = [URL]...['URL]
标记之间的东西。
,
作为
[
和]
是保留令牌,要匹配它们需要前缀它们被反斜杠(即。"逃离")[^'[]
匹配任何非左括号的字符。括号表示可以捕获的组
注意事项:嵌套的URL标签不起作用,本身包含方括号的标签不起作用,加上引号的字符串"..."
也应该没有括号——也就是说,它们不会像正确的标记解析器那样被处理。
据我所知,解决这种问题的唯一方法是进行完整的解析。
但如果你确定数据没有这些异常,你就没事了!
这是请求的正则表达式
'[URL=(?<url>[^']]*)'](?<text>[^'[]*)'[/URL']
使用以下代码访问请求的值:
var regex = new Regex(@"'[URL=(?<url>[^']]*)'](?<text>[^'[]*)'[/URL']");
var matches = regex.Matches(textToSearchIn);
foreach (Match match in matches)
{
Debug.Print("Url: {0} Text: {1}", match.Groups["url"].Value, match.Groups["text"].Value);
}