Регулярка и замена

russya

Client
Регистрация
08.07.2014
Сообщения
719
Благодарностей
77
Баллы
28
Текст: Привет, Привет как дела |Привет|

Пользуюсь заменой. Заменяю слово Привет на П и у меня заменяет 3-и слово
А мне нужно только 2-а первых. Как сделать чтобы это |Привет| не входило в замену?
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 600
Баллы
113

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 328
Благодарностей
5 431
Баллы
113
(^| )Привет
 

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 328
Благодарностей
5 431
Баллы
113

silent

Client
Регистрация
05.04.2014
Сообщения
237
Благодарностей
84
Баллы
28

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 600
Баллы
113
Это значит перед словом нету "|" ?
после. (?!слово) - просмотр вперёд с отрицанием. Удобно, когда нужно отрицать более одного символа.
В данной ситуации также подойдёт Привет(?=[^|]) т.к. всего один символ нас может не устраивать
 

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 328
Благодарностей
5 431
Баллы
113

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 600
Баллы
113
Странно, но тут же нет отрицания.
тут другая логика. В первом случае для нас нужно было, чтобы после слова привет не было |
Во втором случае нас устраивает любой символ после привет, кроме |
 

russya

Client
Регистрация
08.07.2014
Сообщения
719
Благодарностей
77
Баллы
28
У меня разные варианты бывают. Нужно чтобы эти не брались |Привет| {Привет| |Привет}
А все остальные брались, такие как Привет Привет, Привет. "Привет"
 

russya

Client
Регистрация
08.07.2014
Сообщения
719
Благодарностей
77
Баллы
28
что-то не могу написать регулярку
 

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 328
Благодарностей
5 431
Баллы
113
что-то не могу написать регулярку
Зайди в конструктор регулярок, вставь слева примеры, а сверху вставь регулярки которые написали, и смотри совпадает ли кол-во найденных с кол-вом нужных. Надо было сразу примеры все давать. Вы дали одну строку, по ней вам и сделали регулярку. Экстрасенсов тут нету.

тут другая логика. В первом случае для нас нужно было, чтобы после слова привет не было |
Во втором случае нас устраивает любой символ после привет, кроме |
Ну вроде как квадратные скобки это значит отрицание. Верно?
 
  • Спасибо
Реакции: russya

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 600
Баллы
113
Зайди в конструктор регулярок, вставь слева примеры, а сверху вставь регулярки которые написали, и смотри совпадает ли кол-во найденных с кол-вом нужных. Надо было сразу примеры все давать. Вы дали одну строку, по ней вам и сделали регулярку. Экстрасенсов тут нету.


Ну вроде как квадратные скобки это значит отрицание. Верно?
Квадратные скобки - не отрицание. В квадратных скобках идёт перечисление того, какие символы могут быть. Если стоит ^ значит какие символы исключаем из поиска.
 
  • Спасибо
Реакции: Mikhail B. и russya

russya

Client
Регистрация
08.07.2014
Сообщения
719
Благодарностей
77
Баллы
28
(?<=[^{]|[^|])Привет(?=[^}]|[^|]) - может подскажете в чем тут ошибка
 

russya

Client
Регистрация
08.07.2014
Сообщения
719
Благодарностей
77
Баллы
28
(?!=\||\})Привет(?!\||\})
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 600
Баллы
113

russya

Client
Регистрация
08.07.2014
Сообщения
719
Благодарностей
77
Баллы
28
(?<=[^{|])Привет(?=[^}|])
Все равно что-то не то.
Привет как дела
впер |Привет| вап
апыва {Привет|пвап
апвыа|Привет} авива
{Привет} авп
hgk Привет!
jgk Привет.
Привет,
fjgkld {Привет

Должно 4 привета выбить, а выбевает 3
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 600
Баллы
113
Все равно что-то не то.
Привет как дела
впер |Привет| вап
апыва {Привет|пвап
апвыа|Привет} авива
{Привет} авп
hgk Привет!
jgk Привет.
Привет,
fjgkld {Привет

Должно 4 привета выбить, а выбевает 3
из-за привета в начале. Нет символов до

(?<![{|])Привет(?![|}])
 
  • Спасибо
Реакции: russya

russya

Client
Регистрация
08.07.2014
Сообщения
719
Благодарностей
77
Баллы
28
из-за привета в начале. Нет символов до

(?<![{|])Привет(?![|}])
Спасибо большое хороший человек. Но после этого у меня другая загвоздка.
Получается если у меня есть слово Приветик и я зменяю этой регуляркой, то у меня получается заменит вот так Пик, А мне нужно чтобы такие слова тоже не заменяло. Помоги и я копеечку тебе подкину
 

russya

Client
Регистрация
08.07.2014
Сообщения
719
Благодарностей
77
Баллы
28
или есть такие пример: громПриветик . Ответ будет громПик . А мне нужно чтобы такие слова не трогало. Как это называется, строгий поиск
Может лучше сделать не отрицание, а какие символы могут быть перед и после словом. Например только пробелы и запятые и точки и разные "" ()
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 600
Баллы
113
Спасибо большое хороший человек. Но после этого у меня другая загвоздка.
Получается если у меня есть слово Приветик и я зменяю этой регуляркой, то у меня получается заменит вот так Пик, А мне нужно чтобы такие слова тоже не заменяло. Помоги и я копеечку тебе подкину
Давай ты обдумаешь сначала все возможное повороты и варианты и выложишь текст-пример со всеми этими вариантами, когда надо менять, а когда нет. Выложишь, что должны получить в итоге. Тогда и будет решать всё сразу, не по шажочку
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 600
Баллы
113

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 328
Благодарностей
5 431
Баллы
113

russya

Client
Регистрация
08.07.2014
Сообщения
719
Благодарностей
77
Баллы
28

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 600
Баллы
113

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 328
Благодарностей
5 431
Баллы
113

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)