Регулярное выражение для замены строки, но не значения, присвоенные скаляру - PullRequest
2 голосов
/ 23 февраля 2012

Прошу прощения, если мой вопрос звучит немного неловко.Я ищу регулярное выражение, которое заменит номера строк в исходном файле perl, не затрагивая значения, присвоенные скалярам.

Думаю, что ниже, мой вопрос станет немного понятнее.Скажем, у меня есть источник perl, который выглядит следующим образом:

1. $foo = 2.4;
2. print $foo;

Я хотел бы, чтобы регулярное выражение заменяло эти номера строк (1. 2. etc..), не влияя на значение, присвоенное скалярам, ​​и поэтому в этом случае $foo.

Спасибо

Ответы [ 2 ]

5 голосов
/ 23 февраля 2012

привязать ваше регулярное выражение к началу строки:

для удаления чисел:

perl -p -i.bak -e's{^\d+\. }{}' myperl
4 голосов
/ 23 февраля 2012

В регулярном выражении perl вы можете использовать символ вставки ^ для обозначения начала строки.$ представляет конец строки.Они известны как якоря.

Таким образом, чтобы найти число \d в начале строки (только), вы можете найти

/^\d+/

Если вы хотите удалить эти числа, выможете «заменить» их ничем, как в

s/^\d+//g

Вы также хотите включить точку после числа, чтобы вы могли попробовать;

/^\d+./

Но в регулярном выражении точка представляет«любой символ», так что вам нужно будет уйти от точки, чтобы она интерпретировалась буквально

/^\d+\./

Символ каретки ^ также выполняет двойную функцию в наборах символов (они их отрицают), я только упомяну этотак как это распространенный источник путаницы при изучении регулярных выражений.

/[^\d]/   # Match characters that are not digits
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...