如何使用单个正则表达式匹配以“/ 1”或“/ 2”结尾的行?

时间:2012-02-26 22:09:01

标签: regex perl

我正在解析文本行,并尝试使用单个正则表达式从行中删除尾部的“/ 1”或“/ 2”。

现在我有了这个并且它可以正常工作:

  $id =~ s/\/1$//;
  $id =~ s/\/2$//;

如何将这些组合成一行?我尝试使用大括号,但我没有让它起作用。

3 个答案:

答案 0 :(得分:4)

已经给出了正确的答案。但是,我想补充一点,当你的正则表达式中有斜杠/时,最好使用不同的分隔符。它使它更具可读性,你不必逃避斜线。

$id =~ s#/[12]$##;

您可以使用各种各样的字符作为分隔符,有关详细信息,请参阅perlop

答案 1 :(得分:2)

您可以使用字符类 - [12]表示1或2:

$id =~ s/\/[12]$//;

答案 2 :(得分:2)

$id =~ s/\/[12]$//;

使用与[12]1匹配的字符类2