我正在尝试匹配包含字母数字、数字和点的字符串。
- 以字母 [a-z|A-Z] 开头,后跟以点分隔的数字 介于 [1.2.3.5] 之间,仅以数字结尾。
我尝试匹配的一些示例:
my @patternsTomatch = (
'SAN100.25.36.2', # Valid string
, 'DF1.2.3.5', # Valid string
, 'BADPATTERN', # In-Valid string
, '12BADPATTERN', # In-Valid string
, '.DF1.2.3.5', # In-Valid string
, 'SAN100.25.36.2.' # In-Valid string
);
foreach my $pattern (@patternsTomatch) {
if ( $pattern =~ /^([a-z|A-Z]+)(\d+\.)(.*)$/ ) { print " $pattern \n"; }
}
但是上述尝试无法正常工作?
此外,还需要一个正则表达式来匹配单独条件下的固定格式字符串 XC1.2.3.4_25。
- 以字母 [a-z|A-Z] 开头,后跟以点分隔的数字 介于 [1.2.3.5] 之间,后仅跟一个下划线,仅以 数字。
谢谢。
最佳答案
您可能首先匹配 1+ 个字符 [A-Za-z]+
(请注意,您不需要字符类中的管道),然后重复匹配数字,中间有一个点:
^[A-Za-z]+\d+(?:\.\d+)+$
要匹配末尾的下划线和数字,您可以在断言字符串末尾之前在模式末尾添加匹配的下划线和 1+ 位数字:
^[A-Za-z]+\d+(?:\.\d+)+_\d+$
关于regex - Perl正则表达式匹配包含字母/数字/点的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59685344/