验证字符串在前半部分与后半部分相同

时间:2014-06-19 16:06:34

标签: regex

我有一种情况,我需要搜索一个前面的值等于后半部分的值,其中一个标记符分隔两者。

示例数据:

433315283V005984521
005984521V005984521

理想情况下,正则表达式应匹配第二个数据,但不匹配第一个数据。角色V是双方之间的界限

我尝试过Look Aheads and Look Behinds但是我的实现没有成功

V{1}(?=\d{1,})

也许我做错了,更不用说我没有用正则表达式进行很多价值检查,而是更多地用它来验证数据。

2 个答案:

答案 0 :(得分:2)

您可以使用以下正则表达式来实现此目的:

^(.*?)V\1$

(.*?)捕获V之前的内容,并将其存储在反向引用\1中。如果V之前和V之后的部分相同,则匹配成功。

Regex101 Demo

答案 1 :(得分:0)

使用Perl:

#!/usr/bin/perl

use strict;
use warnings;

my @strings_to_compare = ( "433315283V005984521", 
                           "005984521V005984521" );

foreach my $compare ( @strings_to_compare ) {
    my ( $first_bit, $last_bit ) = split ( "V", $compare );
    if ( $first_bit eq $last_bit ) { print "Match: $compare\n" };
}