字符串匹配的返回值

发布于 2024-10-30 22:02:57 字数 192 浏览 1 评论 0原文

假设我在 awk 中有一段代码:

str_1 = "abc123defg";
match(str_1, /[0-9]+/);
num_1 = substr(str_1, RSTART, RLENGTH);

那么 num_1 将是“123”。同一任务的 Perl 版本是什么?

提前致谢。

Pretend I have a code in awk:

str_1 = "abc123defg";
match(str_1, /[0-9]+/);
num_1 = substr(str_1, RSTART, RLENGTH);

Then num_1 will be "123". What is the Perl version of the same task?

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

轻拂→两袖风尘 2024-11-06 22:02:57

我会把它翻译成:

my $num_1 = ($str_1 =~ /(\d+)/)[0];

I'd translate that to:

my $num_1 = ($str_1 =~ /(\d+)/)[0];
月野兔 2024-11-06 22:02:57

我通常会做类似

my ($num_1) = $str_1 =~ /(\d+)/;

or 的

my $num_1;
if ($str_1 =~ /(\d+)/) {
    $num_1 = $1;
}

事情在 Perl 的模式中 \d 相当于 ASCII 字符串的 [0-9]

I would usually do something like

my ($num_1) = $str_1 =~ /(\d+)/;

or

my $num_1;
if ($str_1 =~ /(\d+)/) {
    $num_1 = $1;
}

In Perl's patterns \d is equivalent to [0-9] for ASCII strings.

云之铃。 2024-11-06 22:02:57

它可能是:

$str="abc123defg";
$str =~ /[0-9]+/;
$num_1 = 
amp;;

你的 awk 直接翻译成:

$str="abc123defg";
$str =~ /[0-9]+/;
$num_1 = substr($str, $-[0], $+[0]-$-[0]);

可以写成:

use English;

$str="abc123defg";
$str =~ /[0-9]+/;
$num_1 = substr($str, $LAST_MATCH_START[0], $LAST_MATCH_END[0]-$LAST_MATCH_START[0]);

It could be:

$str="abc123defg";
$str =~ /[0-9]+/;
$num_1 = 
amp;;

Your awk translates directly into:

$str="abc123defg";
$str =~ /[0-9]+/;
$num_1 = substr($str, $-[0], $+[0]-$-[0]);

Which could be written as:

use English;

$str="abc123defg";
$str =~ /[0-9]+/;
$num_1 = substr($str, $LAST_MATCH_START[0], $LAST_MATCH_END[0]-$LAST_MATCH_START[0]);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文