Notepad ++删除括号之间的\ s

用户名

我试图让RegEx正常工作,它将删除文本尖括号之间的所有空白。但是我无法克服这个特定的问题:

首先,这是我正在研究的RegEx

([<].*\s[>])

方括号内包含一个标签,该标签将被另一个程序读取,因此不能有空格。这是一个例子

<tagname>foreign text with space that needs to stay like this</endtag>

有时候,它们看起来会很不正确(标签之间有空格):

<ta gname>foreign text with space that needs to stay like this< /endtag>

我的表达式失败,因为它将包含从第一个<到最后一个>的所有内容。我正在考虑如何解决此问题,我认为如果删除所有与拉丁字符相邻的\ s(标签是文本中唯一的拉丁字符),则可以完成此操作。所以我想到了这样的事情:

([<>]\s\?[A-Za-z]\s\?[<>])

并替换为

\1^\s

但是显然这并不容易。

维克多·史翠比维

您可以使用以下基于正则表达式的搜索和替换:

(?:\G(?!^)|<)[^>\s]*\K\s++(?=[^>]*>)

并替换为空字符串。

图案细节

  • (?:\G(?!^)|<)-上一次成功匹配的结束位置(\G(?!^))或<符号
  • [^>\s]*-除>空格以外的0+个字符
  • \K -省略到目前为止所有匹配的文本
  • \s++ -1+空格(完全匹配以提高性能)
  • (?=[^>]*>)-要求0+个字符的检查,而不是>紧跟>在1+个空格之后的字符。

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章