我正在尝试使用正则表达式将长文本中某些字符串中的空格(可以是 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