Regex 在另一个正则表达式中使用来自正则表达式的匹配:跳过元字符
我有一个正则表达式(regex1)和一些Perl代码,它们从一个大的文本文档中挑选出一个特定的文本字符串,称之为起始点。这个起点是我想从大型文本文档中提取的更大文本字符串的起点。我想使用另一个正则表达式(regex2)从起点提取到终点。我在正则表达式(regex2)中使用了一组单词,可以很容易地找到端点。这是我的问题。起始点文本字符串可能包含元字符,正则表达式将对其进行不同的解释。我不知道这些会是什么。我正在尝试处理一大组文本文档,每个文档的起点都会有所不同。如何让正则表达式将文本字符串解释为文本字符串,而不是带有元字符的文本字符串 也许这段代码将有助于理解这一点$起始点在这段代码上面的代码中标识,是大型文本字符串$text的提取部分Regex 在另一个正则表达式中使用来自正则表达式的匹配:跳过元字符,regex,perl,Regex,Perl,我有一个正则表达式(regex1)和一些Perl代码,它们从一个大的文本文档中挑选出一个特定的文本字符串,称之为起始点。这个起点是我想从大型文本文档中提取的更大文本字符串的起点。我想使用另一个正则表达式(regex2)从起点提取到终点。我在正则表达式(regex2)中使用了一组单词,可以很容易地找到端点。这是我的问题。起始点文本字符串可能包含元字符,正则表达式将对其进行不同的解释。我不知道这些会是什么。我正在尝试处理一大组文本文档,每个文档的起点都会有所不同。如何让正则表达式将文本字符串解释为文
my $END_POINT = "(STOP|CEASE|END|QUIT)";
my @NFS = $TEXT =~ m/(($START_POINT).*?($END_POINT))/misog;
我曾尝试使用quotemeta函数,但没有成功。通过添加斜杠来更改文本,似乎破坏了$START_POINT文本字符串的完整性
总之,我正在寻找某种方法,告诉正则表达式在$START_POINT中查找精确的字符串,而不将任何字符串解释为元字符,同时仍保持字符串的完整性。虽然我可以让quotemeta正常工作,但你知道还有其他选择吗
提前感谢您的帮助 您需要将文本转换为正则表达式模式。这就是
quotemeta
所做的
my $start = '*';
my $start_pat = quotemeta($start); # * => \*
/$start_pat/ # Matches "*"
quotemeta
可通过\Q..\E
访问:
my $start = '*';
/\Q$start_pat\E/ # Matches "*"
为什么要重新实现
quotemeta
?能否显示一个示例字符串,其中quotemeta
为您做了错误的事情?在一般情况下,它添加的反斜杠(而不是斜杠)正好满足您的要求。