【问题标题】:exclude the first word from a string in perl [duplicate]从perl中的字符串中排除第一个单词[重复]
【发布时间】:2014-01-14 00:19:57
【问题描述】:

我有一个像下面这样的字符串,字符串可能会扩展更多,但我只想排除第一个单词而不是下一个连续的单词。话

at.below.card

我希望 o/p 如下所示

below.card

【问题讨论】:

  • $string =~ s/at[.]//
  • 感谢您的回复,在我的文件中,每一行都不以“at”开头,请提出建议。
  • 我正在使用 s/^\S+\.//;但它只打印第二个单词,而不是下一个连续的单词

标签: perl pattern-matching


【解决方案1】:
$string =~ /.*?\.(.*)/
print $1

这匹配到第一个点的最短字符串,然后返回 $1 中的其余部分。

【讨论】:

  • 感谢您的回复,我得到了解决方案
【解决方案2】:

您可以通过简单的字符串替换来排除第一个单词。

$mywords = "at.below.card";
$mywords =~ s/^[^\.]*\.(.*)$/$1/;
print $mywords;

【讨论】:

  • =~s/^[^\.]*\.(.*)$/$1/;哇,它按预期工作得很好。你真的让我的一天变得更轻松了。非常感谢你的及时回复。祝你有美好的一天。
【解决方案3】:

您可以通过以下两种方式实现这一目标:

use strict;
use warnings;

my $string = 'at.below.card';

$string =~ s/^.*?\.//;
print $string, "\n";

$string = 'at.below.card';
print substr $string, ( index $string, '.' ) + 1;

输出:

below.card
below.card

【讨论】:

  • 感谢您的回复,我得到了解决方案
  • @Rukmangathan - 不客气!
猜你喜欢
  • 2021-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-25
  • 1970-01-01
  • 2012-03-14
相关资源
最近更新 更多