Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.143.223.33] |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Привет
Вот сетуация такая, нужно регулярное выражение, спомощью которого можно было вырезать нужное значение. т.е. папример есть строка: №1 строка такая то, а вот CD нужно вырезать т.е. "CD" нужно вырезать но если так: №2 строка такая то, а вотCDнужно вырезать то "CD" - не рогать. я пишу: "/[^<>]*?CD>.*?/" вырезаеть только с одно края, а с другого не хочет, и вырезает таже если строка №2, ну собственного говоря, то что не вырезает из строки №2 - это одалось. Я с этим так и не смог справиться. Помогите пожалуйсто! Зарание спасибо. |
Сообщ.
#2
,
|
|
|
preg_match("/(^|[^\w])(CD)($|[^\w])/", $str, $matches); echo $matches[2]; |
Сообщ.
#3
,
|
|
|
use locale; ($,, $\)=("\t", "\n"); print ++$i, /\b(CD)\b/gio while <DATA>; __DATA__ строка такая то, а вот CD нужно вырезать строка такая то, а вотCDнужно вырезать CD строка такая то, а вот CD нужно вырезать строка такая то, а вот нужно вырезат ь CD |
Сообщ.
#4
,
|
|
|
Mastilior, слушай, если не вырезать, а просто заменить на что ни будь, то как будет выглядеть выражение? че то у меня с ними вообще кашмар!! ксатате нет нормально инфы по рег. выражениям?
Добавлено инфу уже нашел! вот еще че заметил когда ставишь перед или после "CD" какой нить спец. знак ну "/","№","&", то выражение срабатывает, а можно указать диапазоп всех спец знаков? ну типа как [a-z]? если, да, то как... сто бы при встречи допустим "&CD_" выражение не сробатывало. |
Сообщ.
#5
,
|
|
|
Цитата maxim84_ @ Mastilior, слушай, если не вырезать, а просто заменить на что ни будь, то как будет выглядеть выражение? че то у меня с ними вообще кашмар!! ксатате нет нормально инфы по рег. выражениям? Выражение будет выглядеть также, но только пользоваться ты будешь уже preg_replace'ом. |
Сообщ.
#6
,
|
|
|
ГЫ!
так вот я и говорю, что оно срабатывает если стоят, или в начале, или в конце "CD". ну жно что ниче не менялось если даже: Цитата строка такая то, а вот $CD$ нужно вырезать т.е. даже если рядом стоят спец. символы. Выражение не только сробатывает, но и еще обрезает сиволы вокруг "CD" т.е. Цитата строка такая то, а вот $CD$ нужно вырезать а на выходе получем: Цитата строка такая то, а вот CD нужно вырезать тоже самое и с пробелами: Цитата строка такая то, а вотCDнужно вырезать |
Сообщ.
#7
,
|
|
|
Ты уж определись.
Отметь жирным часть строки, которую надо удалить. Покажи несколько вариантов строк. |
Сообщ.
#8
,
|
|
|
Цитата Ты уж определись. Отметь жирным часть строки, которую надо удалить. Покажи несколько вариантов строк. а я положения и не менял!! просто выше указаное выражение вырезает даже если к нужному слову прилегают спец. сиволы т.е. "#CD#" или "#CD*" в таких случаех ниче не делать! т.е. не вырезать. В предыдущем посте я сказал как выражение работает с заменой. А про замену я спросил т.к. нужно было заменить! в общем это вырожение годиться, но только когда заменяет уберает пробелы возе "CD", вот я и поинтересовался как сделать, что б при выдилении пробелы сохранялись! кароче так! подведу итог выше сказанного: Нужно вырожение которое вырезает или выделяет нужное слово, в нашем случае - это "CD". №1 Цитата строка такая то, а вот CD нужно вырезать в этом случае вырезаем или заменяем и сохраняем пробелы №2 Цитата строка такая то, а вот @CD* нужно вырезать ниче не делаем т.к. возле нужного слова есть спец. символы. символы могут находиться как с одно стороны так и сдругой по отдельности т.е. №3 Цитата строка такая то, а вот *CD нужно вырезать или так №4 Цитата строка такая то, а вот CD* нужно вырезать Понятно? или опять нет? |
Сообщ.
#9
,
|
|
|
Что выделено жирным - то и нахожу:
use locale; $str='CD'; ($,, $\)=(")\t(", ")\n"); print ++$i, / ( (?: ^ | \W )? ) ( \Q$str\E ) ( (?: \W | $ )? ) /iox while <DATA>; __DATA__ строка такая то, а вот CD нужно вырезать строка такая то, а вот @CD* нужно вырезать строка такая то, а вот *CD нужно вырезать строка такая то, а вот CD* нужно вырезать Но сдаётся мне одно из двух: то ли ты не выкладываешь задачу как есть, толи ты сам пока ещё не понял что хочешь получить. Добавлено Выход: 1) ( ) (CD) ( ) 2) (@) (CD) (*) 3) (*) (CD) ( ) 4) ( ) (CD) (*) |
Сообщ.
#10
,
|
|
|
твое выражение опять же срабатывает при присутствии спец сиволов.
Строки какие я привожу это не постоянные, или меняються, т.е. комбинация положения "CD" может быть разное. но я не так делаю как ты, я через preg_replace может по этому такая разница? Цитата Что выделено жирным - то и нахожу: ты не понял! искать нужно исключительно "CD" строки №2-4 являються примером когда выражение не должно срабатывать следовательно не выделяться или не вырезаться.. давай без вырезание просто на замену! например нужно CD заменить на "<b>CD</B>" тем самым выделив ее в тексте. блин ну как объяснить то??? кароче как подсветка синтексиса, если оператор в чистов виде т.е. допустим and, то выделяеться, стоит его изменить на #and то подсветка снимаеться! так понятней? |
Сообщ.
#11
,
|
|
|
maxim84_, то есть заменять можно только, если вокруг CD стоят пробелы? Скажи, какие именно символы могут стоять.
|
Сообщ.
#12
,
|
|
|
use locale; $str='CD'; ($,, $\)=(")\t(", ")\n"); print ++$i, $_ foreach ' строка такая то, а вот CD нужно вырезать строка такая то, а вот @CD* нужно вырезать строка такая то, а вот *CD нужно вырезать строка такая то, а вот CD* нужно вырезать строка такая то, а вотCD* нужно вырезать строка такая то, а вот CD*нужно вырезать ' =~ / ( (?: ^ | \s ) \W? \Q$str\E \W? (?: \s | $ ) ) /gmiox Напиши примеры строк в одном блоке, а в другом строки, которые надо получить. Может хоть так тебя можно будет понять. |
Сообщ.
#13
,
|
|
|
Tishaishii, твое выражение не работает.. че не понятно то??
Mastilior, да пробелы, и еще "(", ")", "=" и все. |
Сообщ.
#14
,
|
|
|
Ну дык в чем проблема-то? Тем более, инфу, говоришь, уже нашел.
/(^|[\s\(\)\=])(CD)($|[\s\(\)\=])/ |
Сообщ.
#15
,
|
|
|
Цитата Ну дык в чем проблема-то? Тем более, инфу, говоришь, уже нашел Ну дык, я нашел, в стандартной справке по php, а там каряво написано!! вот сутки же пытаюст разробраться и все без успешно! за выражение спасибо ща проверю! |