gpt4 book ai didi

regex - 如何使用正则表达式匹配 '('?

转载 作者:行者123 更新时间:2023-12-02 05:23:59 28 4
gpt4 key购买 nike

当我这样做的时候

#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;

my $s = 'dfgdfg5 )';
my $a = '5 )';
my $b = '567';

$s =~ s/$a/$b/g;
print Dumper $s;

我明白了

Unmatched ) in regex; marked by <-- HERE in m/5 ) <-- HERE / at ./test.pl line 11.

问题是 $a 有一个 (.

如何防止正则表达式失败?

更新

$a 中的字符串是从数据库查询中获取的,所以我无法更改它。或者是否可以制作一个 $a2,其中“某物”搜索 ) 并将它们替换为 \)

最佳答案

你需要逃避它。通过在其前面添加反斜杠或使用 quotemeta 手动添加反斜杠或 \Q sequence在正则表达式中:

$a = quotemeta($a);

或者

$s =~ /\Q$a/$b/g;

ETA:如果您想匹配来自数据库查询的文字字符串,这是一个不错的选择。

您还应该知道使用 $a 并不是一个好主意。和 $b作为变量,因为它们将屏蔽与 sort 一起使用的预定义变量.例如。 sort { $a <=> $b } @foo .

关于regex - 如何使用正则表达式匹配 '('?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9789559/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com