Perl从字符串中删除字符,除非重复

时间:2018-11-26 14:50:37

标签: perl substitution

从字符串中删除特定字符的最干净/最简单的方法是什么?除非重复一次。

例如,给出以下字符串:

'it''s 'simple'

我希望:

it's simple

就我的使用而言,连续不能超过两个'字符。

2 个答案:

答案 0 :(得分:2)

使用否定的前瞻断言。

#!/use/bin/perl

use strict;
use warnings;
use feature 'say';

$_ = "'it''s simple'";

say;

s/'(?!')//g;

say;

'(?!')的意思是“一个单引号后面没有紧跟另一个单引号”。

输出:

'it''s simple'
it's simple

答案 1 :(得分:2)

use warnings;
use strict;

my $text = q!'it''s 'simple'!;
$text =~ s/'('?)/$1/g;
print "$text\n";

因此,在正则表达式'('?)中,它会匹配-并删除第一个',如果后面跟着另一个'('?)'*,则会捕获它并将其放在结果中。

此版本将分别处理一个或两个撇号组(因为OP使用术语“重复”而不是“多个”)。如果要用单个单引号替换任何2+撇号序列,请改用正则表达式time_fig, time_axes = plt.subplots(2, 4, figsize=(18.0, 10.0)) for i, ax in enumerate(time_axes.flatten()[:-1]): ax.plot_date(x=np.arange(1,4), y=timeframe.groupby('day').get_group(i+1)['runtime'], fmt='co' ,xdate=False, ydate=True) ax.set_ylim(bottom=datetime.date(1900,1,1), top=None) ax.yaxis.set_major_formatter(DateFormatter('%H:%M:%S')) ax.set_xticks(np.arange(1,4)) plt.subplots_adjust(top=0.95, bottom=0.05, left=0.05, right=0.95, hspace=.30, wspace=0.30) plt.show()