regexp.. отрицание содержание в куске.
lazy?
AAA.*?AAA
AAA.*?AAA
блин, вопрос по-тупому задался.
исправил
исправил
символ 'А' используется ИСКЛЮЧИТЕЛЬНО как разделитель, или он может встречаться и между тройками ААА?
> нужно выделить тот кусок между ААА, который содержит ССС
если perl или pcre, то имхо проще воспользоваться сначала функцией split
если perl или pcre, то имхо проще воспользоваться сначала функцией split
может, конечно
как на перле?
про сплит - конечно проще.
но эта проблема возникала и других задачах. вот решил разобраться
про сплит - конечно проще.
но эта проблема возникала и других задачах. вот решил разобраться
*?AAA(.*?CCC.*?)AAA.*
в этом-то и проблема. в эти точки он загоняет ААА, что не противоречит его жадности. он ничего справа выкинуть не может.
пс: я не понял, зачем в начале ставить ".*?" - оно ж смысла никакого не несёт
$17:07 steel ...trash/fdas(0/2)$ ./aa.pl
yahoo: fdsafdas AAA fdBBBas AAA fdsaCCCfsda
$17:07 steel ...trash/fdas(0/2)$ cat aa.pl
#!/usr/local/bin/perl
$str="AAA fdsafdas AAA fdBBBas AAA fdsaCCCfsda AAA fdsafdas AAAA";
if($str =~ /.*?AAA(.*?CCC.*?)AAA.*/) {
print "yahoo: ".$1."\n";
}
пс: я не понял, зачем в начале ставить ".*?" - оно ж смысла никакого не несёт
*AAA(.*?CCC.*?)AAA.*
In [12]: import re
In [13]: str = 'AAA fdsafdas AAA fdBBBas AAA fdsaCCCfsda AAA fdsafdas AAAA'
In [14]: expr = re.compile ('.*AAA(.*?CCC.*?)AAA')
In [15]: m = expr.match (str)
In [16]: print m.group (1)
fdsaCCCfsda
In [17]:
> вот решил разобраться
имхо ты сначала определись, с чем
имхо ты сначала определись, с чем
имхо ты сначала определись, с чем
как обозначиться кусок любых символов, в котором нет заданной подстроки
убедил.
можно написать типа такого, но работать будет неэффективно, и вообще нафиг не надо:
([^A]|A[^A]|AA[^A])*CCC([^A]|A[^A]|AA[^A])*
жесть..
интересно просто было само существование такое возможности.
всем спасибо!
интересно просто было само существование такое возможности.
всем спасибо!
А у тебя AAA и CCC фиксированной длины?
И это именно три символа одинаковых? Или разные могут быть?
И это именно три символа одинаковых? Или разные могут быть?
Оставить комментарий
Phoenix
вот есть строка ( AAA fdsafdas AAA fdBBBas AAA fdsaCCCfsda AAA fdsafdas AAAA )какой регексп удовлетворяет всему, что между ААА и ААА, содержит ССС и при том не содержит AAA/
т.е. нужно выделить тот кусок между ААА, который содержит ССС
хочется что-то вроде
/AAA[^(AAA)]+CCC[^(AAA)]+AAA/
но не работает