gpt4 book ai didi

regex - Sublime Text正则表达式仅在不转义时起作用

转载 作者:行者123 更新时间:2023-12-03 13:34:56 26 4
gpt4 key购买 nike

在 Sublime Text 3中,为什么这与3个条目匹配

\$http\.post\('\/((?!view|list).)[^\']*'

但这不匹配
\$http\.post\('\/((?!view|list).)[^\']*\'

在以下数据集上。
$http.post('/listSets' ,$scope.updateAccessKey({type: 2}), {
$http.post('/viewedMessage' , viewedMessagePayload, {
$http.post('/listRelatedContent' ,
$http.post('/viewedSet' , payLoad , {
$http.post('/viewDiscussion' , payLoad , {
$http.post('/editMessage' , $scope.updateAccessKey(payLoad), {
$http.post('/addComment' , $scope.updateAccessKey(payLoad), {
$http.post('/createStudySet' , createSetP

我知道转义撇号是可选的,但是为什么它会破坏Sublime Text正则表达式搜索呢?

最佳答案

对于documentation on Search and Replace,内部Sublime使用Boost PCRE引擎为搜索面板中的正则表达式提供动力,根据Boost Regex documentation,构造\'\z同义,并且仅在缓冲区末尾匹配。

因此,以\'结尾的正则表达式版本不匹配任何内容,因为根据定义,它仅匹配看起来像$http.post行的内容,该行出现在文件的最后一行,并且以URL字符串仍未终止的形式结束了文件。

由于正则表达式中*之前的\',只要不包含单引号(由于字符类中的排除),它将匹配该行之后的任意数量的文本。

例如,给定以下输入,您的正则表达式将匹配最后一个$http.post,包括其后直到缓冲区末尾的所有内容。

$http.post('/listSets' ,$scope.updateAccessKey({type: 2}), {
$http.post('/viewedMessage' , viewedMessagePayload, {
$http.post('/listRelatedContent' ,
$http.post('/viewedSet' , payLoad , {
$http.post('/viewDiscussion' , payLoad , {
$http.post('/editMessage' , $scope.updateAccessKey(payLoad), {
$http.post('/addComment' , $scope.updateAccessKey(payLoad), {
$http.post('/createStudySet , $scope.updateAccessKey(payLoad), {

And then some other non code stuff here.
Basically anything but a single quote.

关于regex - Sublime Text正则表达式仅在不转义时起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45181237/

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