所以我有一个大文本文件,如下所示:
<option value value='1' >A
<option value value='2' >B
<option value value='3' >C
<option value value='4' >D
这是几百行,我真的不想手动做。我试图使用的表达是:
<option value='.{1,}' >
当我通过几个在线正则表达式测试程序运行时,它正在按预期工作。我基本上想要删除A,B,C等之前的所有内容。问题是当我尝试在Vim和Notepad ++中使用该表达式时,它似乎找不到任何东西。
答案 0 :(得分:63)
在Notepad ++中,您不需要使用正则表达式。
按住alt以允许您一次选择多行的文本矩形。选择要删除的块,然后按删除。
答案 1 :(得分: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
答案 2 :(得分:20)
A , B , C 等之前的所有内容
这似乎很简单,我必须误解你。这只是
:%s/<.*>//
答案 3 :(得分:8)
除非我没有理解这个问题,否则有一个非常简单的解决方案。以下正则表达式:
(.*)(>)(.*)
将匹配帖子中指定的模式。
因此,在记事本++中,您会找到(.*)(>)(.*)
并将其替换为\3
。
正则表达式基本上是贪婪的,如果你指定(.*)
它将匹配整行,你想要做的是以某种方式将其分解,以便你可以提取你想要保留的字符串。在这里,我完全一样,它在Notepad ++和Editplus3中工作正常。
答案 4 :(得分:7)
原始解决方案存在两个问题。首先,您的示例文本:
<option value value='1' >A
有两个“值”字出现。你的正则表达式没有。此外,您需要在正则表达式的量词中转义左括号,否则Vim会将其解释为文字括号。这个正则表达式有效:
:%s/<option value value='.\{1,}' >//g
答案 5 :(得分:6)
这将删除option
标记,并将字母保留在vim中:
:%s/<option.*>//g
答案 6 :(得分:4)
如果你不那么具体,这可能会有所帮助。你的表达是“贪婪的”,不同的程序可能会以不同的方式解释。在vim中试试这个:
%s/^<[^>]+>//
答案 7 :(得分:3)
在vim
:%s/<option value='.\{1,}' >//
或
:%s/<option value='.\+' >//
在vim正则表达式中,您必须转义一个或多个符号,捕获括号, 有限数字花括号和其他一些。
请参阅:help /magic
,了解哪些特殊字符需要转义(以及如何更改)。
答案 8 :(得分:3)
在记事本++中
搜索
(<option value="\w\w">)\w+">(.+)
替换为
\1\2
答案 9 :(得分:2)
有同样的问题(使用jQuery“完成...”字符串),但只在Notepad ++中,我问,收到了很好的友好回复(这让我明白了我错过了),然后花时间建立一个详细的分步说明,请参阅 Finding Line Beginning using Regular expression in Notepad++
Versailles,2010年4月27日星期二22:53:25 +0200
答案 10 :(得分:2)
Notepad ++:搜索模式=正则表达式
找到:(。*&gt;)(。)
替换为:\ 2
答案 11 :(得分:1)
这会奏效。在我的vim中测试过它。单引号是麻烦。
1,$s/^<option value value=['].['] >/
答案 12 :(得分:1)
的Vim:
:%s /.*&gt; //
答案 13 :(得分:1)
事后一点点,但是如果它对任何人都有用,我可以按照这里的一个例子(通过sdgfsdg)快速选择Notepad的正则表达式。
我必须同样从HTML选择下拉选项列表中提取一些冗余数据,格式为:
<select>
<option value="AC">saint_helena">Ascension Island</option>
<option value="AD">andorra">Andorra</option>
<option value="AE">united_arab_emirates">United Arab Emirates</option>
<option value="AF">afghanistan">Afghanistan</option>:
...
</select>
我真正想要的是:
<select>
<option value="AC">Ascension Island</option>
<option value="AD">Andorra</option>
<option value="AE">United Arab Emirates</option>
<option value="AF">Afghanistan</option>
...
</select>
经过一些拉毛后,我意识到从版本5.8。5(2010年9月)开始,正则表达式似乎仍然不允许表达式中的某些循环(除非有另一种语法),例如,以下甚至可以找到“&gt; united_arab_emirated_emirates”&gt;尽管它有额外的分离下划线:
(">)([a-z]+([_]*[a-z]*)*)(">)
此查询适用于大多数通用RegEx tools,但在Notepad ++中,我必须手动考虑嵌套下划线的最大数量(不幸的是8),使用了更多的丑陋:
(">)([a-z]+[_]*[a-z]*[_]*[a-z]*[_]*[a-z]*[_]*[a-z]*)[_]*[a-z]*[_]*[a-z]*[_]*[a-z]*[_]*[a-z]*(">)
如果有人知道在Notepad ++的替换功能中模拟Regex循环的方法,请告诉我。
答案 14 :(得分:1)
这是关于Notepad ++正则表达式的一篇很好的文章 http://markantoniou.blogspot.com/2008/06/notepad-how-to-use-regular-expressions.html
答案 15 :(得分:0)
非常简单,只需查找:
<option value value=.*?>
并点击替换