|
|
|
RegExp + Replace
|
|||
|---|---|---|---|
|
#18+
есть текст который HTML (валидный или нет) в нём нужно заменить значения атрибута для определённого тега текст для примера <html><body> <a target="aaa.html" href="" >aaaa</a> <h1>dsfds</h1> <a href='bb.html' target="" >aaaa</a> <h2>dsfds</h2> <a href=cc.html >aaaa</a> нужно получить для примера <html><body> <a target="http://aaa.html" href="" >aaaa</a> <h1>dsfds</h1> <a href='http://bb.html' target="" >aaaa</a> <h2>dsfds</h2> <a href=http://cc.html >aaaa</a> у меня есть выражение которое вытаскивает значение href для тега A (с " ' или без) это значения я получаю через коллекцию MatchCollectrion ( SubMatches(1) ) regExp1.Pattern = "<a(.*?)href=\" & Chr(34) & "?'?([^ \" & Chr(34) & "'>]+)\" & Chr(34) & "?'?.*?>" regExp1.IgnoreCase = True regExp1.Global = True Вопрос как я могу заменить значения href(если оно есть) на своё в основном тексте через регулярные выражения причём только для одного выбранного элемента из коллекции Надеюсь что вопрос понятен Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 16:47 |
|
||
|
RegExp + Replace
|
|||
|---|---|---|---|
|
#18+
Ежели правильно понял, то так можно: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 17:36 |
|
||
|
RegExp + Replace
|
|||
|---|---|---|---|
|
#18+
PA Класс думаю то что нужно так можно использовать для изменения атрибутов в любых тегах а где можно найти хорошие примеры по регулярным выражениям (VBScript + JScript) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 17:55 |
|
||
|
RegExp + Replace
|
|||
|---|---|---|---|
|
#18+
в продолжении а как менять значения в цикле допустим для разных тэгов <a> значения href должны быть разные то есть если уже есть http:// в тексте то изменения нет (или другие варианты) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 17:59 |
|
||
|
RegExp + Replace
|
|||
|---|---|---|---|
|
#18+
michael Rа где можно найти хорошие примеры по регулярным выражениям (VBScript + JScript)Вот здесь в принципе можно найти кое-что полезное: http://www.regular-expressions.info/ Но обычно регулярные выражения очень уникальны для каждой задачи и их проще написать с нуля чем найти готовую и исправить для своих нужд. Слишком уж они сложно-читаемые... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 18:23 |
|
||
|
RegExp + Replace
|
|||
|---|---|---|---|
|
#18+
michael Rв продолжении а как менять значения в циклеПараметр Global позволит изменить все вхождения встреченого выражения в строке или только первое. Оно? michael Rдопустим для разных тэгов <a> значения href должны быть разные то есть если уже есть http:// в тексте то изменения нет (или другие варианты)Показывай пример исходных строк и во что их надо превратить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 18:25 |
|
||
|
RegExp + Replace
|
|||
|---|---|---|---|
|
#18+
как часть примера <a href="contact.asp">suggestions</a> page. <a href="IP-commands.asp">IP Command Lines</a> <a target="_top" href='http://www.gdfdf.com/click-2215688-4200925' > <a href=IP-address.asp>IP Addresses Explained</a> нужно как пример <a href="../contact.asp">suggestions</a> page. <a href="aa/IP-commands.asp">IP Command Lines</a> <a target="_top" href='http://www.gdfdf.com/click-2215688-4200925' > не трогать <a href=http://www.aaa/IP-address.asp>IP Addresses Explained</a> то есть нужен цикл и для каждого тега своё изменённое значение href (если нужно и если присутствует в тексте) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 18:42 |
|
||
|
RegExp + Replace
|
|||
|---|---|---|---|
|
#18+
michael Rто есть нужен циклДа, если нужна разная обработка для разных шаблонов, то действительно без цикла не обойтись. Что-то в духе: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 19:02 |
|
||
|
RegExp + Replace
|
|||
|---|---|---|---|
|
#18+
мда если немного по другому если <a> <a href="contact.asp?a=xxx&b=yyy">suggestions</a> page. <a href="IP-commands.asp">IP Command Lines</a> <a target="_top" href='http://www.gdfdf.com/click-2215688-4200925' > <a href=IP-address.asp>IP Addresses Explained</a> преобразовать <a href="MyPage.asp?Site=http://www.site1/contact.asp;;a=xxx::b=yyy">suggestions</a> page. <a href="MyPage.asp?Site=http://www.site1/IP-commands.asp">IP Command Lines</a> <a target="_top" href='MyPage.asp?Site=http://www.gdfdf.com/click-2215688-4200925' > не трогать <a href=MyPage.asp?Site=http://www.aaa/IP-address.asp>IP Addresses Explained</a> поставить свою ссылку и если не было http:// добавить с www.... + параметры от старой ссылки преобразовать как ;; :: для ? & если <img> <img src="1.gif"> <img src="http://www.site2/1.gif"> преобразовать <img src="http://www.site1/3.gif"> <img src="http://www.site2/1.gif"> не менять и по аналогии с другими тэгами как такое сделать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 19:28 |
|
||
|
RegExp + Replace
|
|||
|---|---|---|---|
|
#18+
White Owl по циклу для разных шаблонов получается что замена может менять один элемент несколько раз а нужно чтобы определённый по одному разу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 19:58 |
|
||
|
RegExp + Replace
|
|||
|---|---|---|---|
|
#18+
michael RWhite Owl по циклу для разных шаблонов получается что замена может менять один элемент несколько раз а нужно чтобы определённый по одному разуНу это ж элементарно! Вот сам, глазами посмотри на свой исходный текст и представь как бы ты действовал если бы делал все вручную? Разбей большой текст на строки. Чтобы каждая строка начиналась с тэга. Положи все строки в массив или коллекцию потом сделай цикл по строкам, внутри цикл по шаблонам - найти первый шаблон который подойдет для этой строки, сделать замену, выйти из цикла по шаблонам, перейти на следующую строку. В конце склей все строки обратно в большой текст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 21:26 |
|
||
|
RegExp + Replace
|
|||
|---|---|---|---|
|
#18+
всё сделал по другому может кому пригодится получаю коллекцию тегов через выражение и в цикле в текст2 записываю до то находится До $1 & $1 & (исправленное $2) + $3 храню последнюю позицию (её использую при следующем цикле) после цикла в текст=текст2 то есть склеиваю тексты по вырезанным позициям функциями для текста вроде получается только нужно будет для разных групп тэгов разные условия на редактирование но это уже другая проблема в любом случаи ребята спасибо хранить результаты регулярных выражений в переменных - это класс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 23:52 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=34674235&tid=2163701]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
148ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
| others: | 241ms |
| total: | 489ms |

| 0 / 0 |
