从字符串中删除特定字符的最干净/最简单的方法是什么?除非重复一次。
例如,给出以下字符串:
'it''s 'simple'
我希望:
it's simple
就我的使用而言,连续不能超过两个'字符。
答案 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()
。