C# 使用正则表达式和c从文本中提取变量#
我面前可能有一个简单的任务,但我的正则表达式技能很差。有人能帮我吗,或者给我指出正确的方向吗?:-) 我正在解析的示例文本,我想对结果进行foreach,从中可以得到变量“URL”和介于两者之间的文本: Lorem ipsum door sit amet,concertetur[URL=/test.aspx?ID=12345]Lorem 伊普苏姆[/URL]一位精英。内华达州莫里斯市伊莱芬德国际水道 佐料nisi lacinia sit amet。奥奇莫里斯·福西布斯 ac[URL=/Default.aspx?ID=2222222]lorem[/URL]convallis voliverpat,dolor 自由的独立自主者,我是大封建主义者 orci[URL=/Default.aspx?ID=333333]lorem ipsum dolor[/URL]quis augue。 整数nec euismod semC# 使用正则表达式和c从文本中提取变量#,c#,regex,C#,Regex,我面前可能有一个简单的任务,但我的正则表达式技能很差。有人能帮我吗,或者给我指出正确的方向吗?:-) 我正在解析的示例文本,我想对结果进行foreach,从中可以得到变量“URL”和介于两者之间的文本: Lorem ipsum door sit amet,concertetur[URL=/test.aspx?ID=12345]Lorem 伊普苏姆[/URL]一位精英。内华达州莫里斯市伊莱芬德国际水道 佐料nisi lacinia sit amet。奥奇莫里斯·福西布斯 ac[URL=/Defau
这应该可以为您做到:
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"
}
这应该可以为您做到:
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=([^\]]*)\]([^\[]*\)\[/URL\]"
这应该捕获两个组:1=URL=
之后的内容,2=[URL]…[\URL]
标记之间的内容
基本上
- 由于
和[
是保留的令牌,要匹配它们,您需要添加前缀 通过反斜杠(即“逃离”它们)]
匹配任何非开括号的字符[^\[]
- 括号确定可以捕获的组
“…”
也应该不带括号-也就是说,它们不会像正确的标记解析器那样被处理
据我所知,解决这类问题的唯一方法是进行完全解析
但是,如果您确定数据没有此类异常,您就没事了!这是请求的正则表达式
\[URL=(?<url>[^\]]*)\](?<text>[^\[]*)\[/URL\]
\[URL=(?[^\]*)\](?[^\[]*)\[/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);
}
var regex=new regex(@“\[URL=(?[^\]]*)\](?[^\[]*)\[/URL\]);
var matches=regex.matches(textToSearchIn);
foreach(匹配中的匹配)
{
打印(“Url:{0}文本:{1}”,match.Groups[“Url”].Value,match.Groups[“Text”].Value);
}
这是请求的正则表达式
\[URL=(?<url>[^\]]*)\](?<text>[^\[]*)\[/URL\]
\[URL=(?[^\]*)\](?[^\[]*)\[/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);
}
var regex=new regex(@“\[URL=(?[^\]]*)\](?[^\[]*)\[/URL\]);
var matches=regex.matches(textToSearchIn);
foreach(匹配中的匹配)
{
打印(“Url:{0}文本:{1}”,match.Groups[“Url”].Value,match.Groups[“Text”].Value);
}
-1表示非常糟糕的标题。这可能会有一些帮助:使用String.IndexOf()怎么样API来查找URL值,然后从该索引中可以读取到下一个URL字符串。希望您能获得资金a?当您感觉足够舒服时,可以看看这个gem:关于从何处开始阅读的好建议。-1表示非常糟糕的标题。这可能会有一些帮助:使用string.IndexOf()如何API来查找URL值,然后从该索引读取到找到下一个URL字符串。希望您能获得资金?当您感到足够舒适时,可以查看此宝石:关于从何处开始阅读的好建议。谢谢。这是我选择的方式。谢谢。这是我选择的方式。