none
Регулярные выражения, что не так? RRS feed

Ответы

  • А после ^<a тут у вас пробел \\s? должен быть, где он? А вообще в сети полно готовых, можете взять.
    • Помечено в качестве ответа Шварц 10 февраля 2013 г. 7:48
    10 февраля 2013 г. 7:31
    Модератор

Все ответы

  • А после ^<a тут у вас пробел \\s? должен быть, где он? А вообще в сети полно готовых, можете взять.
    • Помечено в качестве ответа Шварц 10 февраля 2013 г. 7:48
    10 февраля 2013 г. 7:31
    Модератор
  • я вообще правильно составил?
    10 февраля 2013 г. 7:49
  • выполняется разбор "^<a\s?(*[a-zа-яA-ZА-Я])?\s?\href=("')?\s?[a-zа-яA-ZА-Я]("')?[a-zа-яA-ZА-Я]$>" - Перед квантификатором {x,y} ничего нет. вот такое вот вылезает
    • Изменено Шварц 10 февраля 2013 г. 7:50
    10 февраля 2013 г. 7:50
  • "я вообще правильно составил?" - смотря как вы ищете, у вас поиск в Html файле или как?
    10 февраля 2013 г. 7:53
    Модератор
  • Это не то что вам нужно?

    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    10 февраля 2013 г. 7:53
    Отвечающий
  • в простом тексте 
    10 февраля 2013 г. 7:57
  • Посмотрите ссылку которую привёл LXGDARK. Можно примерно так если теги есть:

    "^<a\\s?href\\s*=\\s*(?:\"(?<1>[^\"]*)\"|(?<1>\\S+))>$"

    10 февраля 2013 г. 8:03
    Модератор
  • Спасибо это как раз то что нужно)
    10 февраля 2013 г. 8:06
  • using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.IO;
    using System.Text;
    using System.Windows.Forms;
    using System.Text.RegularExpressions;
    using System.Web;
    
    
    namespace Deleter
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            int q = 0;
            private void button1_Click(object sender, EventArgs e)
            {
                if (q == 0)
                {
                    FolderBrowserDialog fbd = new FolderBrowserDialog();
                    fbd.ShowDialog();
                    listBox1.Items.AddRange(Directory.GetFiles(fbd.SelectedPath, "*.*htm", SearchOption.AllDirectories));
                    
                    Col.Text = listBox1.Items.Count.ToString();
                    q++;
                }
                else if (q == 1)
                {
                    listBox1.Items.Clear();
                    Col.Text = "";
                    q = 0;
                }
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                
    
    
            }
            public void Matches(string Input)
            {
                Match m;
                string reg = "^<a\\s?[a-zА-ЯA-Zа-я]href\\s*=\\s*(?:\"(?<1>[^\"]*)\"|(?<1>\\S+))[a-zА-ЯA-Zа-я]>$";
                try
                {
                    m = Regex.Match(Input, reg,
                          RegexOptions.IgnoreCase | RegexOptions.Compiled);
                    while (m.Success)
                    {
                        listBox2.Items.Add(m.Groups[1].Value);
                        m = m.NextMatch();
                    }
                    while (m.Success == false)
                    {
                        MessageBox.Show("Что то не правильно");
                    }
                }
                catch { }
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                for (int i = 0; i < listBox1.Items.Count; i++)
                {
                    string file =  File.ReadAllText(listBox1.Items[i].ToString());
                    Matches(file);
                    progressBar1.Maximum = listBox1.Items.Count;
                    progressBar1.Value += 1;
                }
            }
    
        }
    }
    выдает  вот это 
    MessageBox.Show("Что то не правильно");


    • Изменено Шварц 10 февраля 2013 г. 8:22
    10 февраля 2013 г. 8:17
  • вообщем мне надо сделать так что бы программа проверяла работает или нет ссылка если нет то ставила #, я просто еще нуб в программировании опыта нет тк 16 лет )
    10 февраля 2013 г. 13:43
  • А как вы это себе представляете, в смысле что работает.
    10 февраля 2013 г. 14:51
    Модератор
  • ну в тексте ищет ссылку, можно сказать для сайтов без применения php, а просто статические ссылки для переходов по страницам,  потом проверяет в той папке где я её выбрал в начале если есть страница ссылку оставить если нет перезаписать на # 
    10 февраля 2013 г. 15:02
  • Главное, что хочу отметить: знаки ^ и $ в регулярке означают, что совпадение будет только в том случае, если матчится вся строка целиком с начала и до конца. Полагаю, эти знаки в начале и конце нужно убрать.
    10 февраля 2013 г. 15:10
  • Console.WriteLine(node.Attributes["href"].Value);
    WebRequest wr = WebRequest.Create(node.Attributes["href"].Value);
    WebResponse wrp = wr.GetResponse(); 
    какой атрибут возвращает тру или фалс, ответила страница или нет
    10 февраля 2013 г. 18:13