Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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_Vim - Fatal编程技术网

Regex 小维姆正则表达式

Regex 小维姆正则表达式,regex,vim,Regex,Vim,我有一组字符串如下所示:”../DisplayPhotod6f6.jpg?t=before&;tn=1&;id=130',我想去掉问号后面的所有内容,看起来像'../DisplayPhotod6f6.jpg' s/\(.\.\.\/DisplayPhoto.\{4,}\.jpg\)*'/\1'/g 这个正则表达式捕获了一些但不是所有的事件,你知道为什么吗?\.{4,}正在尝试匹配4个或更多的字符。看起来您想要的是“匹配任何字符的4个或更多”(\{4,}),但“匹配4个或更多非字符”

我有一组字符串如下所示:
”../DisplayPhotod6f6.jpg?t=before&;tn=1&;id=130'
,我想去掉问号后面的所有内容,看起来像
'../DisplayPhotod6f6.jpg'

s/\(.\.\.\/DisplayPhoto.\{4,}\.jpg\)*'/\1'/g

这个正则表达式捕获了一些但不是所有的事件,你知道为什么吗?

\.{4,}
正在尝试匹配4个或更多的
字符。看起来您想要的是“匹配任何字符的4个或更多”(
\{4,}
),但“匹配4个或更多非
字符”(
[^.]\{4,}
)可能更准确。您还需要将模式末尾的一个
*
更改为
*
,因为
*
当前应用于整个
\(\)
组。

\。{4,}
正在尝试匹配4个或更多的
字符。看起来您想要的是“匹配任何字符的4个或更多”(
\{4,}
),但“匹配4个或更多非
字符”(
[^.]\{4,}
)可能更准确。您还需要将模式末尾的lone
*
更改为
*
,因为
*
当前正在应用于整个
\(\)
组。

以下正则表达式:
/(\.\../DisplayPhoto.\.jpg)/gi

根据以下示例进行测试:

../DisplayPhotocef3.jpg?t=before&tn=1&id=54
../DisplayPhotod6f6.jpg?t=before&tn=1&id=130
将导致:

../DisplayPhotocef3.jpg
../DisplayPhotod6f6.jpg

下面的regexp:
/(\.\./DisplayPhoto.*\.jpg)/gi

根据以下示例进行测试:

../DisplayPhotocef3.jpg?t=before&tn=1&id=54
../DisplayPhotod6f6.jpg?t=before&tn=1&id=130
将导致:

../DisplayPhotocef3.jpg
../DisplayPhotod6f6.jpg

我认为最简单的方法是:

s/?.*$/'/g

上面写着:删除问号后的所有内容,并用一个引号替换。我认为最简单的方法是:

s/?.*$/'/g
%s/\('\.\.\/DisplayPhoto\w\{4,}\.jpg\).*'/\1'/g
这说明:删除问号后的所有内容,并用单个引号替换

%s/\('\.\.\/DisplayPhoto\w\{4,}\.jpg\).*'/\1'/g
一些注意事项:

  • %将导致交换在所有行上工作
  • \如果存在一些格式错误的文件名,请使用w而不是“.”
  • 将匹配正则表达式开头的“.”替换为它应该匹配的“.”
一些注意事项:

  • %将导致交换在所有行上工作
  • \如果存在一些格式错误的文件名,请使用w而不是“.”
  • 将匹配正则表达式开头的“.”替换为它应该匹配的“.”

我会使用宏,有时比regexp更简单(而且是交互式的):

qa
/显示照片
f?dt'
N
Q

然后是一些
@a
,或者
20000@a
浏览所有行。

我会使用宏,有时比regexp更简单(而且是交互式的):

qa
/显示照片
f?dt'
N
Q

然后是一些
@a
,或者
20000@a
浏览所有行。

您能给出一个遗漏事件的示例吗?Amardeep,它遗漏了
“../DisplayPhotocef3.jpg?t=before&;tn=1&;id=54'
”../DisplayPhotod6f6.jpg?t=before&;tn=1&;id=130'
,更多。组开头第一个“.”的目的是什么?是否可以用“'”(单引号)替换?能否给出一个遗漏事件的示例?Amardeep,它遗漏了
“../DisplayPhotocef3.jpg?t=before&;tn=1&;id=54'
”../DisplayPhotod6f6.jpg?t=before&;tn=1&;id=130'
,更多。组开头第一个“.”的目的是什么?它能被一个“'”(单引号)替换吗?奇怪的是,
“../DisplayPhotocef3.jpg?t=before&;tn=1&;id=54'
奇怪,它仍然不适用于
”../displaypoticef3.jpg?t=before&;tn=1&;id=54'
这是PCRE,它不同于Vim的正则表达式。这是PCRE,它不同于Vim的正则表达式。