我有一个字符串:
Str1 = "Confidential Design No. PXB1235GHYZ9"
此字符串也可能出现在以下变体中:
Str2 = "Confidential Design No PXB1235GHYZ9"
(注意“否”旁边没有“。”或
Str3 = "Confidential Design PXB1235GHYZ9"
鉴于关键字Design,我需要提取PXB1235GHYZ9。这个术语总是12个字符长,并且总是alpha和数字的混合。
如何使用RegEx / Perl编写通用脚本来处理所有3个场景?我应该使用空格拆分它们然后检查每个术语吗?或者有一种更简单的方法可以在所有3个场景中提取“PXB1235GHYZ9”吗?
答案 0 :(得分:3)
$str =~ /Confidential Design (No\.? )?([A-Z0-9]{12})/;
这个词是2美元。
答案 1 :(得分:3)
怎么样:
$str =~ /Design +(?:No\.? +)?([A-Za-z0-9]{12})/;
检查Design
,可选地后跟No
或No.
,然后是12个字母数字(我假设您的代码是字母数字),全部由一个或多个空格分隔。代码将以$1
结尾。