2015-10-13 80 views
-1

我試圖在一段時間之前和之後替換字符。替換字符前後的字符 - 正則表達式

我的句子的語法如下:

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

,我想將其轉換爲:

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

這可能嗎?

+3

您使用哪種語言?你有什麼嘗試? – npinti

+2

我想你可以通過'(\ d + \。\ d +)'來捕獲你期望的部分,然後替換它;)。 –

+0

我嘗試在記事本++中編輯插入slq查詢。 @ shA.t感謝提示......這確實有效。 – Kostis

回答

0

我試圖執行搜索,並在記事本替代++。感謝@ shA.t我找到了這樣的解決方案:

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

正則表達式趕上只是包含一個十進制數(我假設列表項是你在找什麼是: '(\d+)[.](\d+)' 爲了使用您需要使用自己的身份證所拍攝組:

從命令行使用Perl這可以以這樣的方式來完成:

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

使用SED是基本相同的:

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

基本上你在這裏做的是找到適合你的模式的文本中的所有項目,然後將它們拆分爲兩個「捕獲組」。然後你重建這些捕獲的元素到你喜歡的形式。在一段時間的兩側

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

捕獲兩個字符,並引用他們:

0

在Perl中你可以使用這個。

#!/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),