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得到了我需要的模式。我甚至没有想到团体参考。太棒了,我得到了我想要的。