我正在尝试从一行文本中提取JIRA标识符。
JIRA标识符的格式为[AZ] +-[0-9]-我具有以下模式:
foreach my $line ( @textBlock ) { my ( $id ) = ( $line =~ /[\s|]?([A-Z]+-[0-9]+)[\s:|]?/ ); push @jiraIDs, $id if ( defined $id && $id !~ /^$/ ); }
如果有人指定一些文本,该文本包含另一个字符串内的模式,这将无法解决- 例如,blah_blah_ABC-123将匹配ABC-123。我不想强制要求比赛前面必须有一个空格或其他定界符,因为如果标识符位于行的开头,这将失败。
blah_blah_ABC-123
有人可以建议必要的符文吗?
谢谢。
您可以通过交替使用模式来确保模式之前的字符是空格或字符串的开头。同样,请确保在其后跟空格或字符串结尾。
您可以使用此正则表达式:
my ( $id ) = ( $line =~ /(?:\s|^)([A-Z]+-[0-9]+)(?=\s|$)/ );