吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1120|回复: 6
收起左侧

[求助] 【C#】查询字符串中指定数据

[复制链接]
lizf2019 发表于 2022-11-15 10:16
本帖最后由 lizf2019 于 2022-11-15 10:17 编辑

字符串:
是一个html文件格式如下:(部分截取)
[HTML] 纯文本查看 复制代码
<div class="row row-gutter-20">[/size]
[size=6]<div class="col col-4 col-gutter-20"><a href="/gif/4920k5k.html" title=".." class="link pic-item">[/size]
[size=6]<imgdata original="//wx3.sinaimg.cn/large/0033dr8Dgy1grwj52dlbxj606o06ot8n02.jpg" alt=".."> <p>..</p> [/size]
[size=6]</a></div>[/size]
[size=6]<div class="col col-4 col-gutter-20">[/size]
[size=6]<a href="/gif/3584251.html" title=".." class="link pic-item"><img data-original="//wx3.sinaimg.cn/large/0033dr8Dgy1gqvp9xn0fqj61400u041f02.jpg" alt=".."> <p>..</p> </a></div>



需要读取出来其中的固定格式字符串:
[Asm] 纯文本查看 复制代码
/gif/XXX.html
(XX为任意数字或字母组合)



求助大佬们C#如何实现

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Exroia 发表于 2022-11-15 10:30
new Regex("/gif/\w*\.gif").Match(htmlstr)
 楼主| lizf2019 发表于 2022-11-15 10:32
Exroia 发表于 2022-11-15 10:30
new Regex("/gif/\w*\.gif").Match(htmlstr)

还请问大佬原字符串中有多个数据怎么办
cq2002 发表于 2022-11-15 10:42
有没有提取无壳程序完整字符串的工具?以前一直用 od。现在od不支持64位程序。dbg找字符串有点乱看不太明白。
xinzhyu 发表于 2022-11-15 11:04
百度一下正则就可以拉
asasascao 发表于 2022-11-15 12:39
最简单写下正则,复杂一些可以引入AngleSharp,HtmlAgilityPack

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
xiaovssha + 1 + 1 我很赞同!HtmlAgilityPack

查看全部评分

极品黑车 发表于 2022-11-15 14:47
本帖最后由 极品黑车 于 2022-11-15 14:56 编辑

拿了个测试的winform写了一下,结果放到一个全局变量List<string>里,测试用的数据是lz主帖里的,打断点能得到结果已经在ls里了
递归函数里写的可能繁琐了一点,用正则应该会更快
QQ截图20221115145103.png

[C#] 纯文本查看 复制代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace winform_test
{
    public partial class Form1 : Form
    {
        public List<string> ls;
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            load();
        }

        private void load()
        {
            string a = "<div class=\"row row-gutter-20\">[size=6]<div class=\"col col-4 col-gutter-20\"><a href=\"/gif/4920k5k.html\" title=\"..\" class=\"link pic-item\">[/size][size=6]<imgdata original=\"//wx3.sinaimg.cn/large/0033dr8Dgy1grwj52dlbxj606o06ot8n02.jpg\" alt=\"..\"> <p>..</p> [/size][size=6]</a></div>[/size][size=6]<div class=\"col col-4 col-gutter-20\">[/size][size=6]<a href=\"/gif/3584251.html\" title=\"..\" class=\"link pic-item\"><img data-original=\"//wx3.sinaimg.cn/large/0033dr8Dgy1gqvp9xn0fqj61400u041f02.jpg\" alt=\"..\"> <p>..</p> </a></div>";
            string start = "/gif/";
            string last = ".html";
            ls = new List<string>();
            GetContent(a, start, last, 1);
        }

        public void GetContent(string str, string start, string last, int n)
        {
            if (str.ToLower().IndexOf(start.ToLower()) >= 0)
            {
                string str1 = str;
                if (n == 1)
                {
                    //保留关键字
                    int a1 = str.ToLower().IndexOf(start.ToLower());
                    str = str.Substring(str.ToLower().IndexOf(start.ToLower()), str.Length - str.ToLower().IndexOf(start.ToLower()));
                    int a2 = str.ToLower().IndexOf(last.ToLower());
                    if (a2 > -1)
                    {
                        str = str.Substring(0, str.ToLower().IndexOf(last.ToLower()) + last.Length);
                        ls.Add(str);
                        str1 = str1.Substring(a1 + a2 + last.Length);
                    }
                }
                else if (n == 2)
                {
                    //去除关键字
                    int a1 = str.ToLower().IndexOf(start.ToLower()) + start.Length;
                    str = str.Substring(str.ToLower().IndexOf(start.ToLower()) + start.Length, str.Length - str.ToLower().IndexOf(start.ToLower()) - start.Length);
                    int a2 = str.ToLower().IndexOf(last.ToLower());
                    if (a2 > -1)
                    {
                        str = str.Substring(0, str.ToLower().IndexOf(last.ToLower()));
                        ls.Add(str);
                        str1 = str1.Substring(a1 + a2 + last.Length);
                    }
                }
                if (str1 != str)
                {
                    GetContent(str1, start, last, n);
                }
            }
        }
    }
}

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
lizf2019 + 2 + 1 感谢大佬指点 太及时了!

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-28 22:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表