gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 12:46:14 49 4
gpt4 key购买 nike

我试图让正则表达式工作,它将删除文本尖括号之间的所有空格。但我无法解决这个特定问题:

首先,这是我正在研究的 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(?!^)|<)[^<>\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+ 个空格之后。

  • enter image description here

    关于Notepad++ 删除括号之间的\s,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40008767/

    49 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com