正则表达式:在特定单词后替换空格

问题描述 投票:0回答:1

我正在尝试(但失败了)编写一个正则表达式 (PCRE2),它将在特定单词的第一个实例(即•VAN•、•VON• 或•DE•)之后用破折号 (-) 替换每个空格它本身必须被空间包围。

例如:

HENRIETTA VON DER GRAAF
CAROLINE VAN OOSTEN DE WINKEL
MARC DE VRIES VAN JONG
ANNEKA VANHOVEN BAKKER
JOHN WILKINSON SMITH

翻译为:

HENRIETTA VON-DER-GRAAF
CAROLINE VAN-OOSTEN-DE-WINKEL
MARC DE-VRIES-VAN-JONG
ANNEKA VANHOVEN BAKKER (NB: Does not match VAN as not surrounded by spaces)
JOHN WILKINSON SMITH (NB: No substitution here as pattern not matched)

这是我所知道的,但它并没有取代比赛后的所有空格:

\b( VON| VAN| DE)+\s

https://regex101.com/r/s6BC1y/1

任何建议都非常感激!

regex string replace sas pcre
1个回答
0
投票

您可以使用以下正则表达式模式实现所需的结果:

(?<=[VON|VAN|DE]\s)\s

此正则表达式模式将在第一个由空格包围的“VON”、“VAN”或“DE”实例之后用破折号替换所有空格。希望对你有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.