捕获正则表达式搜索的一个实例

捕获正则表达式搜索的一个实例

我正在尝试使用 Regex 在报告的开始和同一文件中下一个报告的开始之间进行搜索,捕获整个报告,然后使用它来搜索重复项并将其删除。

它们被 CRLF 分解,我认为我很聪明,(\r\n).*(\r\n)可以捕获报告、查找、删除,然后重复执行下一份报告。

当我这样做时,(\r\n).*(\r\n)它会捕获文件中从下一个 CRLF 到最后一个 CRLF 的内容。

我无论如何也想不出如何将搜索范围限制在报告第一行、正文约 30 行以及报告结尾的一个实例。

答案1

您的问题是点与换行符匹配。请尝试取消勾选“点与换行符匹配”框。在 notepad++ 中可能不难找到该框(请参见 notepad++ 的编辑...查找对话框的左下角)。我不会附上图片,因为您没有在标题中放置 notepad++,我认为如果答案看起来不太以 notepad++ 为中心,并且不必要地以 notepad++ 为中心,那就太好了。其他支持正则表达式的程序也有一个可以勾选或取消勾选的点与换行符匹配的东西。

您可以试验其他搜索,看看它们是否有效。有些搜索无论有没有点都可以工作,例如,如果它们不使用点,或者它们可能使用点但使用.*?运算符的eg *? ,因此它不会匹配太多。其他正则表达式示例要求取消勾选点匹配新行。因此不妨取消勾选它,只勾选它以查看是否有任何对比。您可以尝试^.*$不勾选点匹配新行。或者取消勾选它。或者看看这种形式为 [^X]*X 的模式会发生什么(这是一种避免问题的好方法,例如,如果您执行 .*x,则 * 将包含 x,而您不希望这样。因此,您可以指定不是 x 的所有内容,*,后跟 x),例如 \r\n[^\r\n]*\r\n[^\r\n]*\r\n尝试^[^\r\n]*\r\n 注意方括号内的插入符号表示不。方括号外的 ^ 表示匹配行首的位置。另一种方法是*?专门尝试.*? eg \r\n.*?\r\n .*?将匹配尽可能少的点。因此.*?X将匹配尽可能多的字符直到 X。

相关内容