我正在尝试(但失败了)编写一个正则表达式 (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
任何建议都非常感激!
您可以使用以下正则表达式模式实现所需的结果:
(?<=[VON|VAN|DE]\s)\s
此正则表达式模式将在第一个由空格包围的“VON”、“VAN”或“DE”实例之后用破折号替换所有空格。希望对你有帮助。