如何使用正则表达式搜索所有不匹配不间断空格的空格?

如何使用正则表达式搜索所有不匹配不间断空格的空格?

我正在尝试使用正则表达式将长文本中某些字符串中的空格(可以是 x20 \t 等)更改为不间断空格。但我想避免找到已经完成替换的字符串。我同时使用 Libreoffice 的搜索和替换以及 Writer v. 1.4.2 的扩展 Alternative Find and Replace

我试过:(没有[])

Search [(cf|vgl)(\.)+(?<!xA0)(\s)+

Replace [$1$2 ]

我的信息来源是:https://unicode-org.github.io/icu/userguide/strings/regexp.html#regular-expression-operators

我希望有人能帮帮忙。

答案1

使用负向前瞻代替后瞻:

  • 寻找:((?:cf|vgl)\.)(?:(?!\xA0)\s)+
  • 代替:$1\xA0

解释:

(                   # group 1
    (?:cf|vgl)          # non capture group, cf OR vgl
    \.                  # a dot
)                   # end group 1
(?:                 # non capture group
    (?!\xA0)            # negative lookahead, make sure the next char  is not a non-breaking space
    \s                  # any kind of space
)+                  # end group, may appear 1 or more times

相关内容