Forum Webscript.Ru

Программирование => Регулярные выражения => Тема начата: Vladn от 01 Октября 2003, 16:04:21

Название: Help! Рег-е выр-е
Отправлено: Vladn от 01 Октября 2003, 16:04:21
Подскажите, как записать регулярным выражением следующую фразу:
удалить в текущем документе все буквы A, которые не находятся внутри комментериев
Только не спрашивайте, зачем мне это надо.
Название: Help! Рег-е выр-е
Отправлено: ondr от 01 Октября 2003, 16:55:27
s/()|A/$1/g;

Только "use warnings" этого не оценит...

[OFF]Я замучился править пост. Никак не удается избавится от пробела в строке! Там его быть не должно.[/OFF]
Название: Help! Рег-е выр-е
Отправлено: metton от 02 Октября 2003, 19:48:35
2ondr
Эээ... А зачем эскейпить тире? Оно же не в классе символов. Ещё по хорошему стоило бы добавить модификатор s.
Название: Help! Рег-е выр-е
Отправлено: Oak от 07 Октября 2003, 01:31:35
ondr
Хмм.. а оно разве не скушает  | aaa -->  bbb <--- aaa |  ?
Название: Help! Рег-е выр-е
Отправлено: ondr от 07 Октября 2003, 10:42:04
Цитировать
metton:
Эээ... А зачем эскейпить тире? Оно же не в классе символов.


Еще как в классе! (метасимволов)
perldoc perlre

Цитировать
metton:
Ещё по хорошему стоило бы добавить модификатор s.


Можно.

Цитировать
Oak:
Хмм.. а оно разве не скушает | aaa --> bbb <--- aaa | ?


А что? Должно?
Название: Help! Рег-е выр-е
Отправлено: Oak от 07 Октября 2003, 16:52:03
ondr

Таки я не прав.
Название: Help! Рег-е выр-е
Отправлено: metton от 07 Октября 2003, 17:59:57
2ondr
Ты не прав! Тире не является метасимволом вне квадратных скобок.
Название: Help! Рег-е выр-е
Отправлено: Yukko от 07 Октября 2003, 18:11:25
Насчет дефиса:
Дефис выполняет функции метасимвола только внутри символьного класа — в остальных случаях он совпадает с обычным дефисом. Более того, даже в символьных классах дефис не всегда интерпретируется как метасимвол. Если дефис является первым символом, указанным в классе, он заведомо не может определять интервал и поэтому интерпретируется как литерал. Аналогично, вопросительный знак и точка в конце класса считаются метасимволами в контексте обычных регулярных выражений, но не в контексте класса.
Название: Help! Рег-е выр-е
Отправлено: metton от 07 Октября 2003, 22:59:25
2Yukko
Просветил, дружище ;)
Я об этом и говорил ondr-у.