Notepad++ 删除括号之间的\s
Notepad++ Remove \s in between brackets
我正在尝试让 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\?[<>])
并替换为
^\s
但显然没那么容易。
您可以使用以下基于正则表达式的搜索和替换:
(?:\G(?!^)|<)[^>\s]*\K\s++(?=[^>]*>)
(?:\G(?!^)|<)[^<>\s]*\K\s++(?=[^<>]*>)
并替换为空字符串。参见 regex demo online.
奖金相似模式 不同种类的括号:
- 圆括号/圆括号:
(?:\G(?!^)|\()[^()\s]*\K\s++(?=[^()]*\))
(demo)
- 方括号:
(?:\G(?!^)|\[)[^][\s]*\K\s++(?=[^][]*])
(demo)
- 自定义不同的分隔符,比如说,
|'
和'|
:(?:\G(?!^)|\|')(?:(?!\|'|'\|).)*?\K\s++(?=(?:(?!\|'|'\|).)*'\|)
(demo)
图案详情:
(?:\G(?!^)|<)
- 上一个成功匹配的结束位置 (\G(?!^)
) 或 <
符号
[^>\s]*
- >
和空格 以外的 0+ 个字符
\K
- 忽略目前匹配的所有文本
\s++
- 1+ 个空格(为了更好的性能进行所有格匹配)
(?=[^>]*>)
- 需要 0+ 个字符而不是 >
的检查,紧接着是 >
在 1+ 个空格之后。
我正在尝试让 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\?[<>])
并替换为
^\s
但显然没那么容易。
您可以使用以下基于正则表达式的搜索和替换:
(?:\G(?!^)|<)[^>\s]*\K\s++(?=[^>]*>)
(?:\G(?!^)|<)[^<>\s]*\K\s++(?=[^<>]*>)
并替换为空字符串。参见 regex demo online.
奖金相似模式 不同种类的括号:
- 圆括号/圆括号:
(?:\G(?!^)|\()[^()\s]*\K\s++(?=[^()]*\))
(demo) - 方括号:
(?:\G(?!^)|\[)[^][\s]*\K\s++(?=[^][]*])
(demo) - 自定义不同的分隔符,比如说,
|'
和'|
:(?:\G(?!^)|\|')(?:(?!\|'|'\|).)*?\K\s++(?=(?:(?!\|'|'\|).)*'\|)
(demo)
图案详情:
(?:\G(?!^)|<)
- 上一个成功匹配的结束位置 (\G(?!^)
) 或<
符号[^>\s]*
->
和空格 以外的 0+ 个字符
\K
- 忽略目前匹配的所有文本\s++
- 1+ 个空格(为了更好的性能进行所有格匹配)(?=[^>]*>)
- 需要 0+ 个字符而不是>
的检查,紧接着是>
在 1+ 个空格之后。