powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Regex
14 сообщений из 14, страница 1 из 1
Regex
    #36244714
recvezitor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужна регулярка которая бы выделялла все кроме группы символов. Например такое выраение
(abc) - выделяет только сочетание букв abc
Такое выражение [^abc] - выделяет все кроме букв a b c (по отдельности)
А мне нужна смесь этих двух выражений типа
[^(abc)] - но эта конструкция все равно выделяет все кроме отдельных букв a b c.
Или киньте ссылочку где люди занимаются решулярками
...
Рейтинг: 0 / 0
Regex
    #36244723
Фотография RT183.1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем регулярка?
Код: plaintext
1.
ss = s.replace('abc', '')
...
Рейтинг: 0 / 0
Regex
    #36244731
recvezitor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не это подзадача. Задача - это вытащить теги типа
<!--[if IE]>
<script type="text/javascript" src="/Admin/Public/TestIEComments.js"></script>
<![endif]-->
сейчас используется такая регулярка:
string pattern = @"<!--(\[if[^>]+)>([^!]*)<+!\[endif\]-->";
Но она сломается если внутри скрипта появится символ '!' - ([^!]*).
Нужно чтобы было типа ([^!\[]*) - но это выражение которое исключает любые из двух символов, а надо чтобы исключало только последовательность из этих двух символов '!['
...
Рейтинг: 0 / 0
Regex
    #36244757
Фотография RT183.1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может что-то вроде:
Код: plaintext
1.
(?!\!\[)
...
Рейтинг: 0 / 0
Regex
    #36244813
Фотография RT183.1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то у меня не получается.
Но по-любому и чтобы не мучаться можно
1.
Временно забыть про "![".
2.
Все найденные регэкспом строки обработать обычными
строковыми методами и отсечь те, в которых есть пара "![".
...
Рейтинг: 0 / 0
Regex
    #36244841
Фотография RT183.1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или предварительно во всей входной строке заменить пару "!["
на какой-нибудь редкий символ, типа "~", и уже можно юзать условие [^~]
...
Рейтинг: 0 / 0
Regex
    #36244869
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
recvezitor пишет:

> Нужна регулярка которая бы выделялла все кроме группы символов. Например
> такое выраение
> (abc) - выделяет только сочетание букв abc
> Такое выражение [^abc] - выделяет все кроме букв a b c (по отдельности)
> А мне нужна смесь этих двух выражений типа
> [^(abc)] - но эта конструкция все равно выделяет все кроме отдельных
> букв a b c.

тут
[^(abc)]

скобки ( & ) воспринимаются как символы, а не как метасимволы.

что тебе нужно, я не понял.

Но может быть

([^abc]+)

это то что тебе нужно.

А вообще, хорошо бы писать, какие рег. выражения ты используешь. Их
штук 10 наверное есть.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Regex
    #36244892
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
recvezitor пишет:

> не это подзадача. Задача - это вытащить теги типа

Возможно, задача не решается на рег-выражениях в принципе.
Я не очень понял постановку.

> Нужно чтобы было типа ([^!\[]*) - но это выражение которое исключает
> любые из двух символов, а надо чтобы исключало только последовательность
> из этих двух символов '!['

Надо использовать отрицание или бэктрекинг. Но это не везде есть, не
во всех библиотеках рег-выражений.

Типа

(?<![^abc]+)
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Regex
    #36246652
gerlqs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
recvezitor,

Код: plaintext
((?!abc).)*
...
Рейтинг: 0 / 0
Regex
    #36246744
Фотография RT183.1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gerlqsrecvezitor,

Код: plaintext
((?!abc).)*

Это вроде работает:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
>>> import re
>>> s = 'aaaahhhhh![eee aaaaaattt!oooo[[mm!mmbbbb'
>>>
>>> m = re.search('[a]((?!\!\[).)*', s)
>>> m
<_sre.SRE_Match object at 0x00CB4660>
>>>
>>> m.group( [b]0 )
'aaaaaattt!oooo[[mm!mmbbbb'
>>>
>>> m.group( 1 )
'b'
>>>
>>> m.group( 2 )

Traceback (most recent call last):
  File "<pyshell#7>", line  1 , in <module>
    m.group( 2 )
IndexError: no such group
>>> 
...
Рейтинг: 0 / 0
Regex
    #36246891
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gerlqs пишет:

> ((?!abc).)*

Только звезда ВНУТРИ скобок должна быть, так неверно.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Regex
    #36246906
recvezitor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проверял по сайту http://gskinner.com/RegExr/
и в C# чето никто проверку не прошел. В общем нужно чтобы в тексте

Код: plaintext
1.
2.
string text =
                "qiwbqkwdb<!--[if  IE 5.5]>Files/Stylesheet1.css <script> </script>criptcarredcarbluecar <![endif]--> qweqweqwe " +
                "qiwbqkwdb<!--[if lt IE 6]>/Files/Stylesheet2.js One car red car blue car <![endif]--> qweqweqwe";
шаблон нашел две строки и вытащил нужные группы. Мои шаблон:
Код: plaintext
string pattern = @"<!--(\[if[^>]+)>([^!\[]+)<+!\[endif\]-->";

работает на ура но если появится строчка типа

<!--[if IE 5.5]>Files ! <script> <![endif]-->

ее он не захавает из-за восклицательного знака
...
Рейтинг: 0 / 0
Regex
    #36247947
belugin4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
recvezitor,

Код: plaintext
1.
@"<!--(\[if[^>]+)>.*?<+!\[endif\]-->";
...
Рейтинг: 0 / 0
Regex
    #36251940
recvezitor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
belugin4,

странно но сработало. Хотя похожая конструкция была у меня одной из первых, но она плохо работала если было несколько тегов. Она не останавливалась на первом закрывающем теге а шла до конца и получался всегда один большой match. Но эта конструкция сработала правильно
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Regex
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]