powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Кто на регулярных выражениях собаку съел? Подскажите...
85 сообщений из 85, показаны все 4 страниц
Кто на регулярных выражениях собаку съел? Подскажите...
    #34922486
Automater
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо выцепить из текста все случаи (подстроки) отвечающие следующим критериям:
1. Подстрока начинается со слова AAA
2. Подстрока заканчивается словом BBB
3. Подстрока не содержит слова ZZZ.

Вот это вот "не содержит" никак не могу спрограмить Есть возможность проверять что не содержит какие-то символы: [^z], но нужно чтобы не было конкретного слова.
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34922729
belugin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Python 2.5

(?!...)
Matches if ... doesn't match next. This is a negative lookahead assertion. For example, Isaac (?!Asimov) will match 'Isaac ' only if it's not followed by 'Asimov'.
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34922743
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотря какой язык используеш... У нас например есть несколько вариантов для решения п.3
Код: plaintext
1.
if $f(str,"ZZZ")= 0  w !,"Не содержится"
if str'["ZZZ" w !,"Не содержится"
и это только "основные" варианты...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34922982
qu-qu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AutomaterНадо выцепить из текста все случаи (подстроки) отвечающие следующим критериям:
1. Подстрока начинается со слова AAA
2. Подстрока заканчивается словом BBB
3. Подстрока не содержит слова ZZZ.

Вот это вот "не содержит" никак не могу спрограмить Есть возможность проверять что не содержит какие-то символы: [^z], но нужно чтобы не было конкретного слова.

Ну, что-то типа так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
using System;
using System.IO;
using System.Text.RegularExpressions;

public class Script {
	public static void Main (string[] args) {
		string text = @"qwerty-trewq-qwerty-werty-trewq-erty-trewq-rty";
		Regex rx = new Regex(@"-(?!tr)\w*ty"); // начинаются на "-" (минус), заканчиваются на "ty", не содержат "tr"...
     // Find matches.
     MatchCollection matches = rx.Matches(text);

     // Report the number of matches found.
     Console.WriteLine("{0} matches found.", matches.Count);

     // Report on each match.
     foreach (Match match in matches)
     {
         string word = match.Groups[0].Value;
         int index = match.Index;
         Console.WriteLine("{0} repeated at position {1}", word, index);   
     }
	}
}
//////////////// Output:

4 matches found.
-qwerty repeated at position 12
-werty repeated at position 19
-erty repeated at position 31
-rty repeated at position 42
З.Ы. курить надо т.н. (?! ) Grouping construct...
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34922990
Фотография Green2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пусть Automater скажет, на каком языке он пишет эти выражения, а то мы тут насоветуем...

--

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34923002
Automater
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C#.
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34923023
Automater
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Green2пусть Automater скажет, на каком языке он пишет эти выражения, а то мы тут насоветуем...хреновый!
С# - айтов в смысле регулярных...

qu-quЗ.Ы. курить надо т.н. (?! ) Grouping construct...Да допёр я до этого...
Но тут "начинается с -", частный случай. А если просто в строке не должно быть подстроки?

Код: plaintext
new Regex(@"[\S\s](?!tr)\w*ty");
Так что-ли? Пробовал я такой вариант, он один символ возращает.
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34923046
Automater
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AutomaterС# - айтов в смысле регулярных..."Ацтой" там слово.

Кароче пока мучуюсь вот так:
Expression-Based Patterns - example that matches words within a string and capitalizes them:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
static string CapText(Match m)
    {
// get the matched string
    string x = m.ToString();	
// if the first char is lower case
    if (char.IsLower(x[ 0 ]))	
// capitalize it
      return char.ToUpper(x[ 0 ]) + x.Substring( 1 , x.Length- 1 ); 
    return x;
    }
    
  static void Main()
    {
    string text = "the quick red fox jumped over the 
      lazy brown dog.";
    System.Console.WriteLine("text=[" + text + "]");
    string pattern = @"\w+";
    string result = Regex.Replace(text, pattern,
		  new MatchEvaluator(Test.CapText));
    System.Console.WriteLine("result=[" + result + "]");
    }
А там, в этой маленькой статической процедуре, уже проверяю на наличие строки.

Но это ж решение "через ж."

И вообще, после нескольких полномасштабных серфов по этому вопросу у меня создалось впечатление что в C# нельзя проверить отсутствие последовательности символов.
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34923864
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Automaterу меня создалось впечатление что в C# нельзя проверить отсутствие последовательности символов.
Отрицания еще никто не отменял Т.е. ты проверяеш "наличие", потом добавляеш к этому условию отрицание и вуаля!
Или у "насильников" такое не катит?
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34923880
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qu-quНу, что-то типа так:
Код: plaintext
1.
2.
3.
...
Regex rx = new Regex(@"-(?!tr)\w*ty");
...


наверное все таки имелось в виду:

(?! \w* tr)\w*ty

тестовый пример подобран неудачно и решение действительно частное, но не по той причине, что была озвучена. Решение первоначальной задачи:

(\bAAA\b(?!(?!.*?\bBBB\b).*?\bZZZ\b).*?\bBBB\b)

если имелись в виду не слова, а подстроки, \b убрать
но я бы делал вот так:

Код: plaintext
1.
2.
3.
4.
if (/\bAAA\b.*?(\bZZZ\b|\bBBB\b)/) {
   if ($ 1  eq 'BBB') {
      ...
   }
}

и не лохматил бабушку
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34924096
qu-qu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) qu-quНу, что-то типа так:
Код: plaintext
1.
2.
3.
...
Regex rx = new Regex(@"-(?!tr)\w*ty");
...


наверное все таки имелось в виду:

(?! \w* tr)\w*ty
...
Да, вы правы, именно это и имелось ввиду, прошу прощения у топиккастера за некоторую небрежность в тестовом примере, однако ж, я честно в З.Ы. сказал, что "курить" надо именно Grouping construct, а не ждать от посетителей форума готовых решений... (у отвечающего, банально, может не хватать времени, чтобы проверять досконально основную идею ответа).
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34927383
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)
(\bAAA\b(?!(?!.*?\bBBB\b).*?\bZZZ\b).*?\bBBB\b)


мда. поторопился
это тоже не работает. Проблема в том, что при неуспешном сопоставлении поиск не останавливается, а продолжается дальше :(

Вот это теоретически должно работать:

Код: plaintext
1.
/\bAAA\b(.*?)\bBBB\b(?(?{ $ 1  =~ \/\bZZZ\b\/ })\ 0 )/

Идея думаю понятна :)
К сожалению, у меня оно валит Perl

P.S. В моей самописной машинке регулярных выражений эта задачка решается элементарно, так как я добавил в квантификатор возможность задания стоп-выражения
P.P.S. Замечание относительно лохматой бабушки остается в силе, такого рода задачи проще решаются вне стандартного регулярного выражения
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34927963
Automater
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)К сожалению, у меня оно валит Perl нужен с#
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34927989
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Automater Gluk (Kazan)К сожалению, у меня оно валит Perl нужен с#

внимательно читай про бабушку, остальное игра ума
эта задачка не для регекспов
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34928022
Automater
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) Automater Gluk (Kazan)К сожалению, у меня оно валит Perl нужен с#

внимательно читай про бабушку, остальное игра ума
эта задачка не для регексповWho is missis Babushka?

Я много серфил. Создалось впечатление что нету никаких отрицаний целых подстрок .
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34928115
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)
Код: plaintext
1.
2.
3.
4.
if (/\bAAA\b.*?(\bZZZ\b|\bBBB\b)/) {
   if ($ 1  eq 'BBB') {
      ...
   }
}

и не лохматил бабушку
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34928470
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AutomaterСоздалось впечатление что нету никаких отрицаний целых подстрок .
У нас в Cache проверка по шаблону возвращает:
0 - ложь
1 - истина
если подставить отрицание к выражению "содержит" - получим "не содержит" Хотя в этом не нужны регулярные выражения... У нас есть такая бинарная операция "содержит"
Код: plaintext
1.
2.
3.
4.
if str["ZZZ" {
   w !,"Содержит"
} else {
   w !,"Не содержит"
}
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34928587
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa AutomaterСоздалось впечатление что нету никаких отрицаний целых подстрок .
У нас в Cache проверка по шаблону возвращает:
0 - ложь
1 - истина
если подставить отрицание к выражению "содержит" - получим "не содержит" Хотя в этом не нужны регулярные выражения... У нас есть такая бинарная операция "содержит"
Код: plaintext
1.
2.
3.
4.
if str["ZZZ" {
   w !,"Содержит"
} else {
   w !,"Не содержит"
}


Я конечно понимаю, что у кашистов принято называть регулярными выражениями все что угодно кроме регулярных выражений, но автор явно сказал, что его интересует C#
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34928700
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про отрицание писал я, вот и отписался...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34929291
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AutomaterЯ много серфил. Создалось впечатление что нету никаких отрицаний целых подстрок .Вообще-то отрицания есть. Только с ними работать сложно :)
Если на время отвлечешься от C# и почитаешь perlre, там есть глава под названием Backtracking. И там с примерами объясняется как работает движок регулярных выражений и почему AAA.*(?!ZZZ) работает не так как ожидалось.
А вообще, отрицание можно сделать двумя способами. Через (?!word) или (word){0}.
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34929310
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если так? Не проверял.
AAA(?:[^BZ]*(?!ZZZ)Z*)+BBB
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34931190
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoесли так? Не проверял.
AAA(?:[^BZ]*(?!ZZZ)Z*)+BBB

частное решение [^BZ]
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34931194
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owlили (word){0}.

Гмм. всегда считал, что сие совпадет с пустой строкой, стало быть найдется в любой строке
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34931387
Tellur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я делал так
Код: plaintext
1.
/([^v]|v(?!asia))+/
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34933461
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) White Owlили (word){0}.

Гмм. всегда считал, что сие совпадет с пустой строкой, стало быть найдется в любой строкеОшибался :)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
#!/usr/bin/perl
$a = "wqeAAAZZZZBBBasdffg";
$b = "wqeAAAZZBBBasdffg";
$c = "wqeAAABBBasdffg";

$pattern = "AAA(ZZZ){0}BBB";

print "\$a - Yes\n" if ($a =~ $pattern);
print "\$b - Yes\n" if ($b =~ $pattern);
print "\$c - Yes\n" if ($c =~ $pattern);
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34934560
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlОшибался :)


Уел Но исходной задачи это увы не решает
Потому что как только мы добавим квантификатор на произвольный символ,
он скушает ZZZ и его не будет. Велеть ему не кушать подстроку мы не умеем,
а все базирующееся на символьных наборах будет частным решением.

Или я не прав ?
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34934980
Tellur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
/AAA([^Z]|Z(?!ZZ))+BBB/
вот же решение
что то я не придумал случая когда оно не сработает
и что значит частное решение? на место AAA BBB и ZZZ можно подставить любые другие строки
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34935014
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tellurна место AAA BBB и ZZZ можно подставить любые другие строки

Угум, а [^Z] в регулярном выражении в RunTime-е будешь строить ???
А если BBB и ZZZ (те самые которые любые строки) одинаковый префикс имеют, как выражение выглядить будет ???

Например:

AAA = qwerty
BBB = abcd
ZZZ = abef

Частным считаю решение, приниципиально зависимое от входных данных
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34936368
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)Но исходной задачи это увы не решает
Потому что как только мы добавим квантификатор на произвольный символ,
он скушает ZZZ и его не будет. Велеть ему не кушать подстроку мы не умеем,
а все базирующееся на символьных наборах будет частным решением.

Или я не прав ?Почти прав. Произвольный символ не скушает ZZZ а сместит его. Любой шаблон содержащий отрицание слова на самом деле означает "и в строке есть подстрока которая не равна ZZZ". Поэтому если у нас есть AAAxZZZ и мы проверяем на (ZZZ){0} подстрока xZ уже удовлетворяет условию, и все выражение становится правдой.
В общем, до тех пор пока у нас в строке нету произвольных символов отрицание будет работать, как только между отрицательным и 'положительным' шаблоном появляется произвольный символ - отрицание работать перестает....
Поэтому обычно задачи типа "проверить что в строке между словами AAA и BBB нету слова ZZZ" решаются через два условия.
Что-то в духе:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
#!/usr/bin/perl
$a = "wqeAAAxxZZZxxBBBasdffg";
$b = "wqeAAAxZZxBBBasdffg";
$c = "wqeAAAxxxBBBasdffg";

$pattern1 = "AAA(.*?)BBB";
$pattern2 = "ZZZ";

print "\$a - Yes\n" if (($a =~ $pattern1) && ($ 1  !~ $pattern2));
print "\$b - Yes\n" if (($b =~ $pattern1) && ($ 1  !~ $pattern2));
print "\$c - Yes\n" if (($c =~ $pattern1) && ($ 1  !~ $pattern2));
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34936397
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tellur
Код: plaintext
1.
/AAA([^Z]|Z(?!ZZ))+BBB/
вот же решение
что то я не придумал случая когда оно не сработаета.... это мысль. Запретить первый символ слова или разрешить первый символ после которого не идет конец слова.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
#!/usr/bin/perl
$a = "xxxx Ananas xx Apple xx Apricot xxxxx";
$b = "xxxx Ananas xx Almond xx Apricot xxxxx";
$c = "xxxx Ananas Apricot xxxxx";

$pattern = "Ananas([^A]|A(?!pple))*Apricot";

print "\$a - Yes\n" if ($a =~ $pattern);
print "\$b - Yes\n" if ($b =~ $pattern);
print "\$c - Yes\n" if ($c =~ $pattern);
хммм... А ведь работает...
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34936428
Automater
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо подумать над идеей...
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34937068
Tellur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)
Угум, а [^Z] в регулярном выражении в RunTime-е будешь строить ???
А если BBB и ZZZ (те самые которые любые строки) одинаковый префикс имеют, как выражение выглядить будет ???

Например:

AAA = qwerty
BBB = abcd
ZZZ = abef

Частным считаю решение, приниципиально зависимое от входных данных

то же самое можно сказать и про AAA, BBB
их же в током случает тоже "RunTime-е будешм строить"
не вижу нечего сложног сделать [^Z], т.к. Z - это всего лишь первая буква слова ZZZ.
А то так получается надо написать регулярное выражение которое не зная слова AAA должно определить что с него должна начинаться подстрока, должна оканчиваться на некое слово BBB которое тоже в выражении не фигурирует. Фантастика, похоже регулярные выражения научились читать мысли
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34937070
Tellur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)
А если BBB и ZZZ (те самые которые любые строки) одинаковый префикс имеют, как выражение выглядить будет ???

Например:

AAA = qwerty
BBB = abcd
ZZZ = abef


точно так же и будет выглядеть
Код: plaintext
1.
/qwerty([^a]|a(?!bef))+abcd/
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34937071
Tellur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну да, правда вместо "+" стоит "*" поставить
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34937343
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlПоэтому обычно задачи типа "проверить что в строке между словами AAA и BBB нету слова ZZZ" решаются через два условия.
Что-то в духе:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
#!/usr/bin/perl
$a = "wqeAAAxxZZZxxBBBasdffg";
$b = "wqeAAAxZZxBBBasdffg";
$c = "wqeAAAxxxBBBasdffg";

$pattern1 = "AAA(.*?)BBB";
$pattern2 = "ZZZ";

print "\$a - Yes\n" if (($a =~ $pattern1) && ($ 1  !~ $pattern2));
print "\$b - Yes\n" if (($b =~ $pattern1) && ($ 1  !~ $pattern2));
print "\$c - Yes\n" if (($c =~ $pattern1) && ($ 1  !~ $pattern2));


Вы только что повторили мою мысль относительно лохматой Бабушки
(см. выше по треду)

Задача не решается в рамках универсального регулярного выражения
Ясный пень, что она легко решается за этими рамками
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34937349
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tellurточно так же и будет выглядеть


Если не сложно, будь так добр написать универсальное Perl-овое регулярное выражение, решающее задачу. Конкретные значения подстрок должны интерполироваться из $1, $2 и $3 соотвественно. Именно выражение, а не скажем кусок кода, генерирующее выражение, решающее частную задачу
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34937419
Tellur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)
Если не сложно, будь так добр написать универсальное Perl-овое регулярное выражение, решающее задачу. Конкретные значения подстрок должны интерполироваться из $1, $2 и $3 соотвественно. Именно выражение, а не скажем кусок кода, генерирующее выражение, решающее частную задачу
Теперь я, кажется, понял о чем речь. Речь о том что Perl умеет подставлять строки в регулярные выражения из "$1, $2 и $3"
К сожалению на Perl не пишу. Пишу на PHP. там в стандарных функциях preg_match() такой возможности нет. preg_match() оперирует одной входной строкой, и на выходе получаем массив совпадений.
Так что вся ваша универсальность работает опять же не везде. не знаю как дело обстоит с C# и .Net
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34937445
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tellur
Так что вся ваша универсальность работает опять же не везде. не знаю как дело обстоит с C# и .Net

Как я уже сказал, все это обсуждалово не более чем игра ума (поскольку есть простой способ решить задачу вне регулярного выражения). Поскольку игра ума хочется чистого решения. Есть чистое решение, подставляющее переменные в выражение (и для PHP кстати). Нет чистого решения, подставляющего результаты обработки этих переменных
Ну и вопросы эффективности. Все эти игры могут существенно просадить производительность, по сравнению с простым и незамысловатым кондовым решением
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34937718
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)Конкретные значения подстрок должны интерполироваться из $1, $2 и $3 соотвественно. Именно выражение, а не скажем кусок кода, генерирующее выражение, решающее частную задачубоюсь, в пыхе (возможно и в перле) выражение "$var" является не строкой, а именно куском кода, генерирующего строку.
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34937721
Tellur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)
Ну и вопросы эффективности. Все эти игры могут существенно просадить производительность, по сравнению с простым и незамысловатым кондовым решением
Согласен. каждой технологии свое место. И использование регулярных выражений здесь не очень то уместно. Но это надо решать на этапе постановки задачи. Я же просто пытался предложить решение в рамках уже поставленой задачи (вопрос был о решении с помощью регулярных выражений)
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34937811
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo Gluk (Kazan)Конкретные значения подстрок должны интерполироваться из $1, $2 и $3 соотвественно. Именно выражение, а не скажем кусок кода, генерирующее выражение, решающее частную задачубоюсь, в пыхе (возможно и в перле) выражение "$var" является не строкой, а именно куском кода, генерирующего строку.

Это вопрос теологический, но при изменении значения переменной регулярное выражение разумеется будет перекомпилировано
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34937880
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты ведь именно теологический вопрос поднял.
А регексп будет компилиться ровно так, как напишешь.
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34937997
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoТы ведь именно теологический вопрос поднял.
А регексп будет компилиться ровно так, как напишешь.

теологический, вопрос поднял автор топика :)
Задача решается проще и эффективнее без помощи регулярных выражений.

Решение White Owl разумеется эффективнее того что предложил я, поскольку поиск на минимальном квантификаторе простой строки (без конструкции выбора) эффективно оптимизируется BM-поиском. Собственно с этого места тему можно считать закрытой, дальше идет теология
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34938018
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tellur
Код: plaintext
1.
/AAA([^Z]|Z(?!ZZ))+BBB/
вот же решение
что то я не придумал случая когда оно не сработает
и что значит частное решение? на место AAA BBB и ZZZ можно подставить любые другие строки

Кстать, не работает ни фига
ни так:

Код: plaintext
1.
2.
3.
4.
5.
$_ = 'CCC AAA DDD BBB ZZZ BBB ZZZ FFF';

if (/AAA([^Z]|Z(?!ZZ))+BBB/) {
   print "$1\n";
}

ни так:

Код: plaintext
1.
2.
3.
4.
5.
$_ = 'CCC AAA DDD BBB ZZZ BBB ZZZ FFF';

if (/AAA([^Z]|Z(?!ZZ))*BBB/) {
   print "$1\n";
}

Почему не работает разбираться было лениво, господа теоретики
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34938027
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вдогон

Gluk (Kazan)Почему не работает разбираться было лениво, господа теоретики

Могу предположить что патамушта DDD

Давайте все же решать поставленные задачи, а не те которые проще решить (оставляя "более общее решение в качестве упражнения для читателя").
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34938032
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробел выводит
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34938034
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так:

Код: plaintext
1.
2.
3.
4.
5.
$_ = 'CCC AAA DDD BBB ZZZ BBB ZZZ FFF';

if (/AAA([^Z]|Z(?!ZZ))*?BBB/) {
   print "$1\n";
}

тоже не работает
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34938043
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoпробел выводит

А должно DDD ;)
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34938047
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
имхо, правильно пробел выводит, попробуй пробел после ААА стереть
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34938062
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй так
AAA((?:[^Z]|Z(?!ZZ))*)BBB

зы перл – здло и АДЪ следует за ним
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34938080
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoимхо, правильно пробел выводит, попробуй пробел после ААА стереть

и чо ? выдала тот же пробел
вообще какую задачу то решаем ???
Та что в первом посте подразумевает ответ DDD (три раза IMHO)
Так что если это и решение, то увы неизвестно какой задачи
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34938106
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoпопробуй так
AAA((?:[^Z]|Z(?!ZZ))*)BBB

зы перл – здло и АДЪ следует за ним

Так работает
концептуальненько

А кто у нас седня добро ? awk или egrep ???
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34938162
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
добро – это С#
в крайнем случае С++

Gluk (Kazan)и чо ? выдала тот же пробелхмм… или перл не умеет в регулярными выражениями работать, или ты где-то не там пробел стёр.
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34938167
Tellur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)
Кстать, не работает ни фига
ни так:

Код: plaintext
1.
2.
3.
4.
5.
$_ = 'CCC AAA DDD BBB ZZZ BBB ZZZ FFF';

if (/AAA([^Z]|Z(?!ZZ))+BBB/) {
   print "$1\n";
}

ни так:

Код: plaintext
1.
2.
3.
4.
5.
$_ = 'CCC AAA DDD BBB ZZZ BBB ZZZ FFF';

if (/AAA([^Z]|Z(?!ZZ))*BBB/) {
   print "$1\n";
}

Почему не работает разбираться было лениво, господа теоретики

мне тоже лень разбираться почему у Вас не работает. Уменя На PHP прекрасно работает
AAA([^Z]|Z(?!ZZ))+BBB

и для CCC AAA DDD BBB ZZZ BBB ZZZ FFF и для... ЛЮБЫХ других случаев. хоть рандомом забивай строку.
Но я так подозреваю в $1 у вас будет содержимое первой скобки а не всего совпадения - поэтому там и пробел.

Код: plaintext
1.
2.
3.
<?php
  if (preg_match("/AAA([^Z]|Z(?!ZZ))+BBB/", "CCC AAA DDD BBB ZZZ BBB ZZZ FFF", $m)) print_r($m); else print "NO";
?>
в результате получаем
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Content-type: text/html
X-Powered-By: PHP/4.3.1

Array
(
    [0] => AAA DDD BBB
    [1] =>
)

то есть нулевой элемент - все совпадение, а начиная с 1 - паттерны выделеные скобками идут
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34938177
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все я прогнал
согласен
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34938181
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoдобро – это С#
в крайнем случае С++


Хорошо что не VB.NET
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34938183
Tellur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) maXmoпробел выводит

А должно DDD ;)

не должно в скобках один символ всего

если бы /AAA(([^Z]|Z(?!ZZ))+)BBB/ тогда в $1 было бы " DDD " а в $2 пробел

это же основы
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34938197
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tellur Gluk (Kazan) maXmoпробел выводит

А должно DDD ;)

не должно в скобках один символ всего

если бы /AAA(([^Z]|Z(?!ZZ))+)BBB/ тогда в $1 было бы " DDD " а в $2 пробел

это же основы

я же сказал, выше что прогнал
я сюда заскакиваю урывками в свободное от основной работы время
когда смотришь мельком можно еще не так лохануться, так что не надо про основы
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34938211
Tellur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)
я же сказал, выше что прогнал
я сюда заскакиваю урывками в свободное от основной работы время
когда смотришь мельком можно еще не так лохануться, так что не надо про основы

сорри когда я начинал писать пост вашего еще не было, разница в минуту всего - сами посмотрите
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34938269
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tellur
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Content-type: text/html
X-Powered-By: PHP/4.3.1

Array
(
    [0] => AAA DDD BBB
    [1] =>
)
странно… а почему только первая скобочка промачилась? Думал, их будет по числу символов – штук пять.
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34938281
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tellur Gluk (Kazan)
я же сказал, выше что прогнал
я сюда заскакиваю урывками в свободное от основной работы время
когда смотришь мельком можно еще не так лохануться, так что не надо про основы

сорри когда я начинал писать пост вашего еще не было, разница в минуту всего - сами посмотрите

Если забыть о том, что выражение надо вычислять динамически, то решение в принципе нормальное. Единственно, что на однобуквенных подстроках будет частный случай с изменением структуры выражения. Но простой поиск строки с последующим поиском в найденном безусловно будет эффективнее
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34940617
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мдаааа

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
$A = 'AAA';
$B = 'BBB';
$Z = 'ZZZ';

$_ = 'DDD AAA FFF BBB ZZZ BBB ZZZ EEE';

if (/$A(?:(?!$Z).)*$B/) {
   print "$&\n";
}

Удивительно, что это не пришло в голову сразу :)
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34940677
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoдобро – это С#


Теперь немножко лирики про извечную борьбу
Бобра сО слом:

1. На сегодня машинка регулярных выражений Perl наиболее заоптимизированная из всехсуществующих.
2. В части нововведений в RegExp, Perl всегда был законодателем мод, расширения 5-ой версии уже стали фактическим стандартом.
3. .Net в настоящий момент вводит новые фичи, отсутствуюшие в Perl и их нововведения безусловно интересны и достойны всяческого внимания, но:
3.1 Некоторая часть нововведения (как например разбор справа налево) откровенно сыра и не готова для практического использования.
3.2 Относительно набившей оскомину задачи проверки баланса скобок, решение предлагаемое Perl (возможность применения рекурсии) мне представляется несколько более универсальным чем финт приедложенный .Net-ом с определением уровня вложенности с использованием именованных сохранений (хотя возможно я просто не до конца вкурил последнее).
3.3 В отличии от .Net в Perl регулярные выражения интегрированы (про C# врать не буду, но в Java вереницы бакслешей (в частности) просто убивают).
3.4 Самое большое, что мне не нравится в .Net, то что его разработчики сознательно и последовательно игнорируют принцип нулевых издержек . Я не хочу платить за функционал (Capture), который не использую (и который вообще вряд ли кто нибудь когда то будет использовать).
3.5 Возможность использования делегатов при подстановке достойна восхищения, но возможности Perl-а в этом отношении никак не меньше.
3.6 Пожалуй единственная действительно ценная возможность предоставляемая .Net и отсутствующая в Perl - ретроспективные проверки произвольной ширины, но и она в подавляющем количестве случаев всего лишь позволит тормознуть крутейший пень непосильным количеством возвратов.
3.7 Документация по regexp-ам у .Net - говно

Плавно переходим к части не связанной с регулярными выражениями:

Совсем недавно, одному из наших заказчиков срочно занадобилась подсистема виртуального хостинга, интегрируемая с нашей биллинговой системой. После того как все остальные разработчики отказались за нее браться (сославшись на откровенно нереальные сроки), я не имея предварительных наработок в этой области, сделал ее за 2 недели (отдельное спасибо CPAN) в связке (Perl+PL/SQL), попутно освоив Perl, некоторые тонкости DNS, CommunigatePro, LDAP, виртуальный хостинг на Apache, MySQL для задач виртуального хостинга и развертывание всего этого добра под Windows и Solaris.
Весь модуль - несколько таблиц, пакетов PL/SQL, JOB-ов и запускаемых по cron или at скриптов Perl (в количестве 9 штук общим объемом не более 700 строк с подробным комментированием), которые немедленно передал на сопровождение другому сотруднику, попутно показав, что писать сопровождаемый софт на Perl можно .
Что то мне подсказывает, что выбери я C# или даже C++, мне было бы низачто не уложиться в озвученные сроки.
Немалую роль сыграла и кроссплатформенность Perl, поскольку заказчик хотел видеть реализацию на солярке.

Теперь о меркантильном:

Perl - бесплатен . Безусловно и для любого использования (и по заверениям создателей навсегда таковым и останется). Более того, по всему миру разбросаны десятки тысяч энтузиастов, разрабатывающих бесплатные модули для решения всевозможных задач. Фактически, разработать собственный востребованный модуль Perl очень сложно по одной только причине - скорее всего он уже написан, тщательно задокументирован и выложен на CPAN.

Все это сказано про Perl - который Вы считаете Злом,
а что хорошего ВЫ можете рассказать о столь любимом вами
Порождении Империи Добра ???
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34940861
qu-qu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)Мдаааа...
...
/$A(?:(?!$Z).)*$B/
... Удивительно, что это не пришло в голову сразу :)
Забавно, именно сегодня утром, во время езды в маршрутке на работу, мне пришла в голову абсолютна та же "мысля", только, оформилась она в нечто более "многословное", типа так: "/$A((?!$Z).(?!$Z))*$B/", или так: "/$A(.(?!$Z)(?<!$Z))*$B/".
Ваш случай, безусловно, более "лаконичен", только я что-то не могу пока догнать - каким образом (?: ) ( noncapturing group ) позволяет избавиться от дублирования negative lookbehind и negative lookahead ?
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34940912
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qu-quВаш случай, безусловно, более "лаконичен", только я что-то не могу пока догнать - каким образом (?: ) ( noncapturing group ) позволяет избавиться от дублирования negative lookbehind и negative lookahead ?

Я просто понял, что легко можно переложить на стандартные regexp-ы то как я решаю эту задачку в своей машинке (которая скорее парсер). Просто стоп-выражение в квантификаторе. Если со следующего символа не начинается ZZZ, захватываем любой символ. Ваши проверки избыточны, внешний квантификатор тоже может быть любой.
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34940926
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qu-qu noncapturing group

в данном случае не более чем оптимизирующий наворот.
не в нем дело, это вполне может быть обычная скобка
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34941095
qu-qu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) qu-qu noncapturing group

в данном случае не более чем оптимизирующий наворот.
не в нем дело, это вполне может быть обычная скобка
Это я уже понял практически сразу же после того, как спросил, а потом - внимательнее посмотрел на выражение...
Gluk (Kazan)... Ваши проверки избыточны, внешний квантификатор тоже может быть любой.
Это тоже стало более-менее понятно (про избыточность), после того как я "поигрался" с различными сочетаниями negative lookbehind и negative lookahead ...
Однако ж, одна неясность все-таки осталась - почему на таком тесте:
"CCCAAADDDBBBAAAZZZDDDBBBAAADZZZDDBBBAAADDZZZDBBBAAADDDZZZBBBAAAZZZBBBZZZAAABBBFFF"...
Вот это "AAA((?!ZZZ) . )*BBB" (или "AAA( . (? < !ZZZ))*BBB") срабатывает:

AAADDDBBB
AAABBB
А это "AAA( . (?!ZZZ))*BBB" (или "AAA((? < !ZZZ) . )*BBB") нет:

AAADDDBBB
AAAZZZDDDBBB (или AAADDDZZZBBB)
AAAZZZBBB
AAABBB
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34941126
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qu-quВот это "AAA((?!ZZZ) . )*BBB" (или "AAA( . (? < !ZZZ))*BBB") срабатывает:

AAADDDBBB
AAABBB
А это "AAA( . (?!ZZZ))*BBB" (или "AAA((? < !ZZZ) . )*BBB") нет:

AAADDDBBB
AAAZZZDDDBBB (или AAADDDZZZBBB)
AAAZZZBBB
AAABBB

Вероятно потому, что сначала надо проверять, а уж затем захватывать ?
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34941257
qu-qu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)... Если со следующего символа не начинается ZZZ, захватываем любой символ...
Предыдущий вопрос можно переформулировать так: какая "концептуальная" разница между "если со следующего символа не начинается ZZZ" и "если со следующим символом не заканчивается ZZZ"?
Gluk (Kazan)... Вероятно потому, что сначала надо проверять, а уж затем захватывать...
Ну дык, вот же: "AAA((? < !ZZZ) . )*BBB" - сначала (вроде бы) "проверяет", однако ж - не работает...
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34941278
qu-qu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вдогонку...
Gluk (Kazan)... Вероятно потому, что сначала надо проверять, а уж затем захватывать...
А вот это: "AAA(( . ? < !ZZZ))*BBB" - сначала (вроде бы) "захватывает", однако ж - работает...
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34941292
qu-qu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qu-qu... "AAA( . (? < !ZZZ))*BBB" ...
ну это, скобкой ошибся, как водится...
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34941322
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)(про C# врать не буду, но в Java вереницы бакслешей (в частности) просто убивают).В С# два типа строк: с-образные и бейсикообразные, во втором символы экранировать не надо. Регекспы не интегрированы ради простоты синтаксиса языка. Я имел в виду не возможности регекспов, а специфические особенность перла как языка
Gluk (Kazan)заказчик хотел видеть реализацию на солярке.в такой постановке про .нет можно было даже не думать.
Gluk (Kazan)Perl - бесплатен .я рад за него :)
Gluk (Kazan)Безусловно и для любого использованиято есть его код в PD? Если по-умному, тебе следовало указать лицензию, а не пытаться изложить её упрощённо.
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34941376
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoЕсли по-умному, тебе следовало указать лицензию, а не пытаться изложить её упрощённо.

изволь

По раздуванию щек, я так понимаю, что в защиту C# кроме двух типов строк и невозможности работы на солярке сказать нечего ???
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34941453
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) изволь вот видишь, его можно использовать не по-любому, а только так, как описано в лицензии, а по-другому его использовать нельзя. И эти ограничения чётко расписаны.

Gluk (Kazan)По раздуванию щек, я так понимаю, что в защиту C# кроме двух типов строк и невозможности работы на солярке сказать нечего ???не представляю, что ты хочешь услышать. Если есть какой-то конкретный вопрос, спрашивай.
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34941459
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну если поддержать разговор… То регекспы в .нет тоже интегрированы: попробуй их оттуда выдрать
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34941523
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoвот видишь, его можно использовать не по-любому, а только так, как описано в лицензии, а по-другому его использовать нельзя. И эти ограничения чётко расписаны

Сравним с ЕУЛОЙ ???

maXmoну если поддержать разговор… То регекспы в .нет тоже интегрированы: попробуй их оттуда выдрать

Когда сказать нечего, по умному лучше помолчать
В следующий раз потрудись небросаться необоснованными заявлениями типа:

XXX есть ЗЛО, ведет в АД и зохавает мозк.

Уверяю тебя, твой имидж от них только страдает
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34941569
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но ведь действительно зохавает :)

Gluk (Kazan)Сравним с ЕУЛОЙ ???сравни, уверяю, .нет тоже можно юзать.
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34941628
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoно ведь действительно зохавает :)


Ага, твой похоже уже захавало, а вот мне почему-то знание Perl-а не мешает пользоваться C# и не вызывает спонтанных позывов писать о нем гадости на заборе
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34943159
Potter.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тогда и мне пожалуйста подскажите по регуляркам :)
Пишу перл-совместимые на ПХП
Строка, которую мне нужно определить, может содержать все буквы латинского алфавита, цифры, а также символы * , . (пробелов может быть сколько угодно и могжет быть любая комбинация разрешенных символов)
Я описываю это следующим образом:
[\w\d*\.,]
но если в строке присутствуют буквы украинского алфавита, такие как і,є,ї то регулярка их пропускает нормально, хотя не должна.
Как мне поставить отрицание этих символов (по всей строке) ?
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34943277
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Potter.Тогда и мне пожалуйста подскажите по регуляркам :)
Пишу перл-совместимые на ПХП
Строка, которую мне нужно определить, может содержать все буквы латинского алфавита, цифры, а также символы * , . (пробелов может быть сколько угодно и могжет быть любая комбинация разрешенных символов)
Я описываю это следующим образом:
[\w\d*\.,]
но если в строке присутствуют буквы украинского алфавита, такие как і,є,ї то регулярка их пропускает нормально, хотя не должна.
Как мне поставить отрицание этих символов (по всей строке) ?А ты разреши только латинский алфавит и цифры.
/^[a-zA-Z0-9\*\. ]+$/
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34945043
Potter.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! Работает! А я думал что [\w] и [a-zA-Z] это одно и то же
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #34946148
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Potter.Спасибо! Работает! А я думал что [\w] и [a-zA-Z] это одно и то жеНет, читай документацию внимательнее:
perlreA \w matches a single alphanumeric character (an alphabetic character, or a decimal digit) or _, not a whole word. Use \w+ to match a string of Perl-identifier characters (which isn't the same as matching an English word). If use locale is in effect, the list of alphabetic characters generated by \w is taken from the current locale.
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #35308255
stepochka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа, может подскажете как разделить в вордовском тексте ИмяФамилия на Имя Фамилия .
все ФИО написаны с большой буквы, а пробелы почему то забывают ставить...
У самого не получается написать выражение что б найти даже, не то что поделить..
хорошо бы RegExp который MS Word понимает
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #35309266
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
([а-яё])([А-ЯЁ])
\1 \2
...
Рейтинг: 0 / 0
Кто на регулярных выражениях собаку съел? Подскажите...
    #35309297
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo
Код: plaintext
1.
([а-яё])([А-ЯЁ])
\1 \2


Красотулечку забыл (c)
Но с 'бЖ' оно безусловно справится
...
Рейтинг: 0 / 0
85 сообщений из 85, показаны все 4 страниц
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Кто на регулярных выражениях собаку съел? Подскажите...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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