Mik*_*ike 31 regex vim notepad++
所以我有一个大文本文件,如下所示:
<option value value='1' >A
<option value value='2' >B
<option value value='3' >C
<option value value='4' >D
Run Code Online (Sandbox Code Playgroud)
这是几百行,我真的不想手动完成.我正在尝试使用的表达式是:
<option value='.{1,}' >
Run Code Online (Sandbox Code Playgroud)
当我通过几个在线正则表达式测试程序运行它时,它正在按预期工作.我基本上想要删除A,B,C等之前的所有内容.问题是当我尝试在Vim和Notepad ++中使用该表达式时,它似乎找不到任何东西.
小智 30
在Notepad ++中:
<option value value='1' >A
<option value value='2' >B
<option value value='3' >C
<option value value='4' >D
Find what: (.*)(>)(.)
Replace with: \3
Replace All
A
B
C
D
Run Code Online (Sandbox Code Playgroud)
Wha*_*awg 20
A,B,C等之前的一切
这似乎很简单,我必须误解你.只是
:%s/<.*>//
Run Code Online (Sandbox Code Playgroud)
除非我没有理解这个问题,否则有一个非常简单的解决方案.以下正则表达式:
(.*)(>)(.*)
Run Code Online (Sandbox Code Playgroud)
将匹配帖子中指定的模式.
因此,在记事本++中,您可以找到(.*)(>)(.*)并替换它\3.
正则表达式基本上是贪婪的,如果你指定(.*)它将匹配整行,你想要做的是以某种方式将其分解,以便你可以提取你想要保留的字符串.在这里,我完全一样,它在Notepad ++和Editplus3中工作正常.
原始解决方案存在两个问题.首先,您的示例文本:
<option value value='1' >A
Run Code Online (Sandbox Code Playgroud)
有两个"价值"字出现.你的正则表达式没有.此外,您需要在正则表达式的量词中转义左括号,否则Vim会将其解释为文字括号.这个正则表达式有效:
:%s/<option value value='.\{1,}' >//g
Run Code Online (Sandbox Code Playgroud)