Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 验证字符串的前半部分与后半部分是否相同_Regex - Fatal编程技术网

Regex 验证字符串的前半部分与后半部分是否相同

Regex 验证字符串的前半部分与后半部分是否相同,regex,Regex,我有一种情况,我需要搜索一个值,其中前半部分等于后半部分,用一个标记字符分隔这两部分 示例数据: 433315283V005984521 005984521V005984521 理想情况下,正则表达式应该匹配第二个数据,而不是第一个数据。字符V是两侧之间的分界符 我试着做“向前看”和“向后看”,但我的实现没有成功 V{1}(?=\d{1,}) 也许我做错了,更不用说我没有对regex进行大量的值检查,更多地使用它来验证数据。您可以使用以下regex来实现这一点: ^(.*?)V\1$ (.

我有一种情况,我需要搜索一个值,其中前半部分等于后半部分,用一个标记字符分隔这两部分

示例数据:

433315283V005984521
005984521V005984521
理想情况下,正则表达式应该匹配第二个数据,而不是第一个数据。字符
V
是两侧之间的分界符

我试着做“向前看”和“向后看”,但我的实现没有成功

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

也许我做错了,更不用说我没有对regex进行大量的值检查,更多地使用它来验证数据。

您可以使用以下regex来实现这一点:

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

使用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" };
}

是否要匹配
V005984521
?否,
V
是标定器。但是@AmalMurali得到了我需要的模式。我甚至没有想到团体参考。太棒了,我得到了我想要的。