正则表达式 一个带有可变空格和换行符的字符串



我有以下字符串正在尝试搜索:

<td></td>
<td>)</td>

除了换行符之外,</td><td>之间可以有任意数量的空格。总是只有一个换行符,但简单地忽略所有空格(包括换行符)的表达式就可以了。

我正在尝试弄清楚如何使用此信息执行字符串替换,而不会折叠文件中的所有空格。我找到了许多带有处理空格的表达式的解决方案,但没有任何东西能够使用换行符。

我的正则表达式经验有限。我应该如何从 bash shell 环境中解决此问题?

如果我理解正确,您正在尝试匹配一个空的<td>标签对,后跟换行符和一个带有单个右括号的<td>标签对(在第一个</td>之后和/或第二个<td>之前有任意数量的空格)。如果正确,请尝试以下表达式:

<td></td> *n *<td>)</td>

请注意,sed通常不支持多行匹配,因此在进行替换之前,您需要使用标签并将下一行附加到当前行(有关完整说明,请参阅此处):

sed ':a;N;$!ba;s|<td></td> *n *<td>)</td>|...|g' infile >outfile

将省略号 ( ... ) 替换为实际的替换文本。

<td>s*?)?s*?</td>

这将匹配 a 与可选的 ) 和标记之间的任意数量的空格。不过我不确定,它是否是您真正要找的字符串?

但是,它的要点是使用 \s 作为空格的字符类,包括换行符。

相关内容

  • 没有找到相关文章

最新更新