regex - Perl正则表达式提取浮点数
问题描述
我需要修改某人的 Perl 脚本,而我对 Perl 一点也不熟悉。
有一个标量变量$var
,它的值是一个浮点数,可能后跟垃圾。我需要提取浮点数。
该数字采用非指数格式:DDD[.DDD],并且没有符号。
小数部分可能会丢失。整数部分没有丢失(.123
只是垃圾)
如果变量以垃圾开头(特别是符号或小数点),我需要提取空字符串。
例子:
-123.456 ==> ""
123. ==> "123"
123.456.789 ==> "123.456"
123.456junk ==> "123.456"
123junk ==> "123"
123.junk ==> "123" # strip the dot if no fraction
.123 ==> ""
junk ==> ""
000.000 ==> "000.000"
有人可以提供解决方案吗,我想应该是:$var =~ s/REGEX_EXPRESSION
,但我不知道REGEX_EXPRESSION
应该是什么。
谢谢你。
解决方案
更新后,您需要的表达式是:
^\d+(?:\.\d+)?
^\d+
匹配字符串开头的数字。(?:
非捕获组的开始。\.\d+
匹配文字.
,后跟数字。)?
关闭非捕获组,使其成为可选。
检查这里的表达式。
一个 Perl 示例:
$var = "123.456.789";
print "old $var\n";
$var =~ /(^\d+(?:\.\d+)?)/;
print "new $1\n";
印刷:
old 123.456.789
new 123.456
推荐阅读
- php - Keycloak 是否可以用作 IDP 和 PHP 应用程序用作 SP?
- java - newSetFromMap 使用布尔值
- plesk - 无法访问 .well-known/acme-challenge 文件夹
- python - Python - 在“。”之后用大写字母重命名数据框列
- python - 如何对大量值进行分箱
- android - 托管工作流 Expo 38 - 生产中 Android 上的 java.lang.NullPointerException
- excel - 当A行的单元格具有相同的值时,如何在B行中分配相同的值?
- sql - Laravel 8 - firstOrCreate() 不返回数据库中设置的默认值
- javascript - 角度提取 FormArray 值
- design-patterns - 如何实现具有多个参数且每个参数都是接口的工厂模式