查找使用正则表达式开始的行

时间:2010-04-21 08:42:21

标签: regex notepad++

在Notepad ++

中使用正则表达式开始查找行

我想从div中的所有jQuery“done”属性中删除4000行HTML文件。

<DIV class=menu done27="1" done26="0"
done9="1" done8="0" done7="1"
done6="0" done4="20">

应替换为:

<DIV class=menu>

this experiment我可以用这个正则表达式来完成:

[ ^]done[0-9]+="[0-9]+"

使用Notepad ++ 5.6.8 Unicode,使用ANSI编码的文件,我将此正则表达式放在“查找内容”字段中。它只替换以空格开头的5次出现,它将错过从一行开头的2次出现。

如何构建正则表达式以删除以关键字开头的HTML元素的所有属性?

5 个答案:

答案 0 :(得分:13)

扩展将“\ n”替换为“LINEBREAK”

非常感谢所有人及时回复。根据您的建议,这就是我所做的:

  • “Notepad ++&gt; View&gt; Show Symbol&gt; Show End Of Line”在每一行显示“CR + LF”。
  • “Notepad ++&gt;搜索&gt;查找”,“搜索模式”=“正常”,确保“查找内容”=“LINEBREAK”找不到任何内容
  • “搜索模式”=“扩展”,“查找内容”=“\ n \ r”只能找到双重中断(CR + LF +空白行); “\ n \ r”什么也没找到;然而“\ n”确实找到了所有的换行符,只有它们。
  • 保存我的“Towncar.htm”测试文件为“ Towncar_02.htm ”(也以ANSI编码)
  • 在“扩展”下,将所有“\ n”替换为“LINEBREAK”(注意尾随空格)
  • 在“正则表达式”下,替换每次出现:

     done[0-9]*="[0-9]*"
    

在“完成”之前小心检查是否有头部空间
  并且没有跟踪空间!见下文)

带有空字符串

  • 在“扩展”下,在“LINEBREAK”之后用“\ n”(无尾随空格)替换每次出现的“LINEBREAK”!)
  • 检查生成的“Towncar.htm”文件(经过一些整容重新格式化)看起来很漂亮,刷新后,它仍然与“Towncar_02.htm”备份相同。

召回和注释:

  • 这个论坛显然在Chrome 4中运行良好;但是对于某些浏览器(例如IE6和其他已停产的浏览器),在某些情况下会导致一些伪影;所以,要小心:
  • 即使论坛没有在您的浏览器中显示, 一个标题空间,即正则表达式的开头 (上面的“完成...”正则表达式)和里面它,所以用起始空格替换仅以开头的字符串,从而使得更加稳定不要用“撤消”或“美沙酮”改变最终的其他字符串,否则
  • 同样,即使论坛在您的浏览器中显示一个,在Regex的末尾也有 没有尾随空格
  • 正则表达式中的
  • ,[0-9]匹配1且只出现1个十进制数字(0-9范围内的字符);它匹配«0»或«1»或«9»等,但不是«01»或«835»或«»(空字符串)或其中任何一个。
  • *(星号)匹配前一个字符的0次或更多次(此处它匹配空字符串或任何仅由数字组成的字符串)
  • 同样,+(加号)匹配前一个字符的1次或多次(此处匹配任何字符串,至少1个字符长,仅由数字组成)
    参考:http://sourceforge.net/apps/mediawiki/notepad-plus/index.php?title=Regular_Expressions#Notepad.2B.2B_regex_syntax

答案 1 :(得分:1)

我也喜欢Notepad ++但是regexing真的很痛苦。如果你坚持使用Notepad ++,试试这个:

  • 首先找出哪个换行符 正在使用你的角色 文档(查看&gt;显示符号&gt;显示结束 (线)
  • 通过替换删除这些换行符 它们只有一个空格(搜索和替换.CR是\ r \ nLF是\ n。请务必勾选“扩展”搜索模式)
  • 正则表达式替换done[0-9][0-9]*=\"[0-9][0-9]*\" 用空字符串(一定要放 正则表达式之前的单个空格 表达)

瞧!不是很干净但很有效; o)

之后,如果你想再次使用它,你可以使用HTMLTidy函数

答案 2 :(得分:1)

一个简单的方法是:

  1. 转到“搜索”和“替换”
  2. 在“查找内容”中输入“\ n”
  3. 在“替换为”
  4. 中输入您的字符串
  5. 在“搜索模式”
  6. 中选择“扩展”
  7. 点击“全部替换”
  8. 它会在第一行以外的每一行的开头插入你的字符串。

答案 3 :(得分:0)

我担心,Notepad ++ Regex无法做到这一点

Notepad ++使用Scintilla正则表达式引擎,它基于每行,因此无法进行多行搜索/替换。

  

请注意,\ r和\ n永远不会匹配   因为在Scintilla,经常   表达式搜索是按行进行的   line(剥去行尾字符)。

引自http://www.scintilla.org/SciTERegEx.html

答案 4 :(得分:0)

你几乎拥有它!不幸的是,Notepad ++中的完整解决方案必须是一个3步骤。

  1. 使用以下搜索进行正则表达式搜索/替换:\<done[0-9]+="[0-9]+"[ ]*当然,将替换字段留空,以便它只删除匹配的所有内容。 (在Notepad ++中,对正则表达式的理解\<表示“单词的开头”。)

  2. 选择受先前搜索/替换影响的文本部分。您不想选择整个文档,因为我们要...

  3. 删除换行符。按Ctrl-F再次调出“搜索/替换”对话框,这次选择“扩展”搜索模式,而不是“正则表达式”。根据您的文档格式,您需要搜索\n\r\n。替换字段应该是空的。此外,请确保选中“在选择中”复选框。

  4. 点击“全部替换”,您就完成了!