删除perl中两个特定字符之间的部分字符串

时间:2018-01-24 14:36:23

标签: perl

例如 “Neuer Termin mit ihn am Mittwoch {$ tag._value =”weekday = wednesday“} um 2 {$ tag._value =”02“}” 是我的字符串,我想要 “Neuer Termin mit ihn am Mittwoch嗯2”。 因为“{$ tag._value =”weekday = wednesday“}”和“{$ tag._value =”02“}”可以改变,所以长度不是常数我想在“{$ tag._value”的基础上删除它=“weekday = wednesday”}“删除{}之间的所有内容,但不删除{}以外的任何内容。

4 个答案:

答案 0 :(得分:2)

我理解您的问题为"如何删除{}之间的所有内容?"

这样做:

#!/usr/bin/env perl

use strict;
use warnings;

my $string = 'Neuer Termin mit ihn am Mittwoch {$tag._value="weekday=wednesday"} um 2{$tag._value="02"}';
$string =~ s/\{[^\}]+\}//g;
print "'$string'\n";

<强>输出

'Neuer Termin mit ihn am Mittwoch  um 2'

顺便说一下:它应该是

   Neuer Termin mit Ihnen am Mittwoch(的新约会/下周三)

   Neuer Termin mit ihm am Mittwoch(的新约会/下周三)

答案 1 :(得分:0)

你说

"Neuer Termin mit ihn am Mittwoch {$tag._value="weekday=wednesday"} um 2{$tag._value="02"}"是我的字符串

但是你在字符串中有双引号"。你需要更好地解释你的问题:这个字符串来自哪里?

对于非德语人士来说,&#34; Neuer Termin mit ihn am Mittwoch&#34; 就像是&#34;在周中与他约会的新约会&#34; < / em>的

答案 2 :(得分:-1)

  

在这种情况下,您只有打开和关闭,然后这将删除括号模式

#For the testing purpose we escaped the double quotes within the string.
my $string = "Neuer Termin mit ihn am Mittwoch {$tag._value=\"weekday=wednesday\"} um 2{$tag._value=\"02\"}";

$string=~s/\{([^\{\}]*)\}//g;

print $string;
  

如果你有嵌套的括号,你可以使用。 {{{}}}

$CurBrLoopMany = qw/((?:[^{}]*(?:{(?:[^{}]*(?:{(?:[^{}]*(?:{[^{}]*})*[^{}]*)*})*[^{}]*)*})*[^{}]*)*)/;

$string=~s/\{$CurBrLoopMany\}//g;

print $string;

答案 3 :(得分:-3)

这会将$ string修改为您想要的结果。

margin-left: auto;