regex - Perl正则表达式匹配包含字母/数字/点的字符串

标签 regex perl

我正在尝试匹配包含字母数字、数字和点的字符串。

  • 以字母 [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+)+$

regex demo


要匹配末尾的下划线和数字,您可以在断言字符串末尾之前在模式末尾添加匹配的下划线和 1+ 位数字:

^[A-Za-z]+\d+(?:\.\d+)+_\d+$

Regex demo

关于regex - Perl正则表达式匹配包含字母/数字/点的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59685344/

相关文章:

正则表达式用星号模式替换电话号码

regex - 在 Pyspark 中使用正则表达式函数计算日期

python - Perl 的 (<>) 在 Python 中的等价物是什么? fileinput 没有按预期工作

javascript - 谁能解释一下这个正则表达式

java - 我怎么知道正则表达式是否有多个可能的匹配项?

perl - 如何在perl中等待异步文件

perl - 合并列表列表

perl - 直接在 Emacs 中运行 Perl 代码

java - 正则表达式匹配硬模式

linux - 升级到压缩/测试期间 Perl 冲突