查找这两行的正则表达式例如:
^.*?Error.*(?:\r?\n|\r).*$
^ ...从行首开始每次搜索。
.*? ... 匹配除回车和换行以外的任何字符零次或多次非贪婪。非贪婪意味着尽可能少的字符。换句话说,在第一次出现 Error 时停止,而不是在最后一次出现时停止。
Error ... 这个词必须在两行的第一行才能匹配。
.* ... 匹配除回车和换行零次或多次贪婪之外的任何字符。贪婪意味着现在匹配尽可能多的字符。
(?:\r?\n|\r) ... 是一个非标记组,匹配回车 + 换行(DOS/Windows 文本文件),或仅换行(UNIX 文本文件),或仅回车(旧 MAC 文本文件)。
.* ... 匹配除回车和换行以外的任何字符 0 次或多次贪婪。
$ ... 行尾的锚点。匹配的字符串中不包含行终止符。
换句话说,此表达式匹配包含单词Error 的任何位置的整行、第一行的行终止符以及下一行到行尾的所有内容,但不匹配第二行的行终止符。
UltraEdit 是一个可用于 Windows、Linux 和 Mac 的共享软件文本编辑器。
在 UltraEdit 的 Search - Find 对话框中使用此 Perl 正则表达式,并带有高级查找选项列出包含字符串的行 启用会导致将所有找到的 2 行字符串写入列出所有找到的行的窗口。
打开此窗口的上下文菜单(在 Windows 上单击鼠标右键)并单击复制到剪贴板会导致将找到的所有行复制到系统剪贴板。
按 Ctrl+N 打开一个新文件,按 Ctrl+V 粘贴复制的行,按 Ctrl+S 保存新文件,最终得到一个包含所需信息的文件。
另一种方法是使用 UltraEdit 脚本 FindStringsToNewFile 和简化的正则表达式搜索字符串 Error.*(?:\r?\n|\r).*。此脚本会将所有找到的以关键字 Error 开头并在下一行末尾结束的字符串直接写入新文件。
还有一点:
如果.(点)也匹配换行符,如回车和换行符,则取决于标志。在 UltraEdit 中,该标志默认设置为点与换行符不匹配。在 Perl 正则表达式搜索字符串的开头使用 (?s) 时,标志会更改,然后点也会匹配此搜索的换行符。在搜索字符串的开头使用(?-s),如果应用程序的内部默认设置相反,则可以将标志设置为不匹配换行符。