2013-12-05 3 views
0

У меня есть массив, который имеет некоторые символы, которые я хочу удалить, и даже думал, что найду решение, мне будет интересно узнать, правильно ли это, потому что я боюсь, если Я использую его с массивом, удалит символ, который мне может понадобиться в будущих массивах.Замените только одну часть строки, используя perl

Вот пример пункт в моем массиве:

$string1='22  |  logging monitor informational'; 

поэтому я стараюсь следующее:

$string1=~ s/\s{6}\|(?=\s{6})//; 

Так что мой вывод:

22  logging monitor informational 

Есть другой путь, лучший матч "|". Я просто хочу удалить символ канала.

Заранее спасибо

+1

«Правильный путь» - довольно субъективный термин. Вы пытаетесь удалить 6 пробелов, за которыми следует символ канала? Если это так, да, это правильный путь. – TLP

+0

Я хочу удалить только символ трубы. – David

+0

Тогда вы должны использовать утверждение lookbehind '(? <= \ S {6})'. Поскольку у вас есть строка с фиксированной длиной, это нормально. Вы также можете использовать '\ K', чтобы« сохранить »материал слева. – TLP

ответ

1

«Я хочу, чтобы удалить только характер трубы.»

OK, затем сделайте следующее:

$string1 =~ s/\|//; 

Это удалит первый символ трубы в строке. (Вы сказали в другом комментарии, что вы не хотите удалять какие-либо дополнительные символы в трубке.) Если это не то, что вы хотите, то я предлагаю вам точно указать , что вам нужно. Знаешь, мы не можем читать мысли.

В то же время, я также настоятельно рекомендую прочитать Perl regular expressions tutorial.

Смежные вопросы