Помогите составить регулярное выражение

Статус
В этой теме нельзя размещать новые ответы.

ivan_st

Постоялец
Регистрация
11 Май 2008
Сообщения
52
Реакции
8
есть кусок кода:
ХОРОШИЙ_ТЕКСТ&ei=Bla-bla-bla&ХОРОШИЙ_ТЕКСТ
требуется удалить функцией replace(Reg_Exp, ""):
&ei=Bla-bla-bla
чтобы осталось:
ХОРОШИЙ_ТЕКСТ&ХОРОШИЙ_ТЕКСТ
(Bla-bla-bla - м.б. разным)

таких выражений (одинаковых) м.б. несколько

Спасибо.
 
Язык непонятно какой тебе нужен, поэтому на пхп - приблизительно так:
PHP:
$text = "ХОРОШИЙ_ТЕКСТ&ei=Bla-bla-bla&ХОРОШИЙ_ТЕКСТ&ei=Bla-bla-bla&ПЛОХОЙ ТЕКСТ";
$text = preg_replace('|&ei=[^&]+|', '', $text);
echo $text;
Результат -
HTML:
ХОРОШИЙ_ТЕКСТ&ХОРОШИЙ_ТЕКСТ&ПЛОХОЙ ТЕКСТ
Синтаксис регекспов в большинстве языков похожий, так что можно легко адаптировать под другой язык.
 
ох, извините, это оказался Javascript! :ay:

вот аналогичный код с хелпа
// Replace all instances of the DIV tag with an empty string
var oRegEx = /<div[^>]*>(.*?)<\/div>/gi;
oBody = oBody.replace(oRegEx, "");

задача та же.
Регулярка для меня темный лес.
 
Синтаксис регулярки по идее не меняется:
HTML:
var oRegEx = /&amp;ei=[^&]+/gi; //i - модификатор "игнорировать регистр символов", можно его убрать
oBody = oBody.replace(oRegEx, "");
На работоспособность не проверял - возможно, как есть она не заведется, потребуется экранировать \& , отлаживается все это консолью Firebug.
 
можно здесь, чтоб темы не плодить:

составил кое-как, работает, но
проблема в том из-за <strong>195473 - пришлось в паттерн вставить ">"
но <strong> может быть а может и не быть (или м.б. что-то еще)
Вообще требуется вычленить 3 числа по опорным словам.
BLA-BLA ОпорноеСлово1: BLA-BLA 111111 BLA-BLA ОпорноеСлово2: BLA-BLA 222222 ОпорноеСлово3: BLA-BLA 333333 BLA-BLA
и эти бла-бла могут без пробелов примыкать.
PHP:
  $text = "bla-bla-bla\">ОпорноеСлово1: <strong>111111</strong> • ОпорноеСлово2: <strong>222222<strong> ОпорноеСлово3: <strong>333333</strong> "; 
  $pattern = "|.+ОпорноеСлово1:\s+.+>(\d+).+\s+ОпорноеСлово2:\s+.+>(\d+).+\s+ОпорноеСлово3:\s+.+>(\d+).+\s+|";
  if(preg_match($pattern, $text, $out))
  {
    $t1 = $out[1];
    $t2 = $out[2];
	$t3 = $out[3];
    echo "Полученные значения<br >$t1 $t2 $t3";
  }

Хуже другое , еще м.б и такое (цифры перед словами)
BLA-BLA 111111 BLA-BLA ОпорноеСлово1: BLA-BLA 222222 BLA-BLA ОпорноеСлово2: 333333 BLA-BLA ОпорноеСлово3: BLA-BLA
понятное дело я переверну в паттерне, и могу проверить массив на Empty

Не парится и сделать как я написал, или все можно в один паттерн впихнуть. (эффективность особо не волнует), важнее стабильность.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху