gpt4 book ai didi

c# - C# 的简单正则表达式帮助

转载 作者:行者123 更新时间:2023-11-30 22:48:30 24 4
gpt4 key购买 nike

我有一个未完成的二进制文件,其中包含一些我可以使用正则表达式恢复的信息。内容是:

G $12.Angry.Men.1957.720p.HDTV.x264-HDLH Lhttp://site.com/forum/f89/12-angry-men-1957-720p-hdtv-x264-hdl-538403/L I Š M ,ABBA.The.Movie.1977.720p.BluRay.DTS.x264-iONN Phttp://site.com/forum/f89/abba-movie-1977-720p-bluray-dts-x264-ion-428687/&

我怎样才能解析它,这样我至少可以得到链接,它们是:

http://site.com/forum/f89/abba-movie-1977-720p-bluray-dts-x264-ion-428687/

其中 428687id 号码。

所以我会有一个完整链接和一个id

前面的其他名称是链接的名称:

ABBA.The.Movie.1977.720p.BluRay.DTS.x264-iON

虽然我不确定这些是否可以被解析。我注意到它们在 LINKSNAMES 前后都有一个字符。那么也许这可以缩小问题的范围?

顺便说一句,我愿意为正确答案提供 500 赏金。

最佳答案

类似于下面的正则表达式?

MatchCollection matches = Regex.Matches(yourString, @"http://\S+?-(\d+)/") 
foreach(Match m in matches)
{
string id = m.Captures[0].Value;
string url = m.Value;
}

它将抓取链接(从 http:// 开始)然后不是空格的所有内容(保证 HTTP (URI) 链接中不包含空格)并假设它以数字和尾部斜杠结尾(这将正确删除示例中的 & 或其他尾随文本)。

编辑:整个匹配是链接,ID 在第一个捕获括号中,更新代码以显示如何获取信息。

更新:如果破折号+数字+斜杠可以在 URL 中出现多次,那么必须使用贪心,但是连续的链接(没有额外的文本有空格)将被匹配在一起。如果破折号+数字+斜杠每个 URL 只出现一次,那么惰性是首选。这是目前在上面代码中的解决方案。

替代方法

从更新和额外信息中,我了解到文本中有很多不清楚的地方。另一种方法可能更简单:拆分 http:// 上的所有内容并查看结果。这避免了必须进行复杂的向前/向后正则表达式并确保正确处理连续链接(即,中间没有文本):

// zero-width split:
string[] linksWithText = Regex.Split(yourString, @"(?<=http:\S+-\d+/)");
foreach (string link in linksWithText)
{
Match m = Regex.Match(link, @"(.*)(http:\S+-(\d+)/)$");
if (m.Success)
{
string text = m.Groups[1].Value;
string url = m.Groups[2].Value;
string id = m.Groups[3].Value;
}
}

更新:替代方法已更新。首先是文本(名称),然后是 url。请注意表达式后面的负向外观,以在零宽度点上拆分,将 url 之前的所有内容带到 url 的末尾。

关于c# - C# 的简单正则表达式帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1630922/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com