在期间之前和之后替换字符 - 定期表达

时间:2015-10-13 10:49:38

标签: regex

我试图在一段时间之前和之后替换角色。

我的句子有以下语法:

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

我想将其转换为:

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

这可能吗?

3 个答案:

答案 0 :(得分:0)

正则表达式只捕获包含十进制数的列表项(我假设你正在寻找的是: '(\d+)[.](\d+)' 为了使用捕获的组,您需要使用他们的ID:

从命令行使用Perl可以这样做:

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

使用sed基本相同:

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

基本上你在这里做的是找到适合你的模式的文本中的所有项目,然后将它们分成两个“捕获组”。然后,将这些捕获的元素重建为您喜欢的形式。

答案 1 :(得分: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),

答案 2 :(得分:0)

我试图在notepad ++中执行搜索和替换。感谢@ shA.t我已经找到了解决方案:

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