2015-10-13 3 views
-1

Я пытаюсь заменить символ до и после периода.Заменить символ до и после периода - Regular expressio

Мое предложение имеет следующий синтаксис:

('ΑΕ027428',,,1.2,3,14), 

И я хочу, чтобы преобразовать его в:

('ΑΕ027428',,,'1.2',3,14), 

Возможно ли это?

+3

Какой язык вы используете? Что вы пробовали? – npinti

+2

Я думаю, что вы можете захватить ожидаемую часть '(\ d + \. \ D +)', а затем заменить ее;). –

+0

Я пытаюсь отредактировать запрос slq вставки в блокноте ++. @ shA.t спасибо за подсказку ... это действительно сработало. – Kostis

ответ

0

Я пытался выполнить поиск и замену в Notepad ++. Благодаря @ shA.t я пришел к решению, которое составляет:

Find what: (\d+\.\d+) 
Replace with: \'$1\' 
0

регулярное выражение, чтобы поймать только элементы списка, содержащие десятичное число (который я предполагаю, это то, что вы ищете: '(\d+)[.](\d+)' для того, чтобы использовать захваченные группы, нужно использовать их ID:

Использование Perl из командной строки, это может быть сделано таким образом:

$ perl -e "s/'(\d+)[.](\d+)'/$1.$2/g;" < your entire text 

Использование СЭД в основном то же самое:

$ sed -i 's/'(\d+)[.](\d+)'/$1.$2/g' < your entire text 

в основном то, что вы здесь делаете, это найти все элементы в тексте, которые подходят вашему шаблону, а затем разбить их на две «группы захвата». Затем вы перестраиваете эти захваченные элементы в форму, которую вы предпочитаете.

0

В Perl вы можете использовать это:

s/(.\..)/'$1'/g 

Захват двух символов с обеих сторон периода и цитировать их.

#!/usr/bin/perl 
use warnings; 
use strict; 

my $string = "('AE027428',,,1.2,3,14),"; 

$string =~ s/(.\..)/'$1'/g; 

print $string; 

Выход:

('AE027428',,,'1.2',3,14), 
Смежные вопросы