正则是在titlecase中转换单词



我使用此正则判处转换titlecase中的单词并确认每个替代:

:s/%V<([A-Za-z0-9àäâæèéëêìòöôœùüûçÀÄÂÆßÈÉËÊÌÖÔŒÙÜÛ])([A-Za-z0-9àäâæèéëêìòöôœùüûçÀÄÂÆßÈÉËÊÌÖÔŒÙÜÛ]*)>/u1L2/gc 

但是,这也匹配已经在titlecase中的单词。

有人知道如何更改上述等级以跳过已经在Titlecase中的单词吗?

:s/%V<([a-z0-9àäâæèéëêìòöôœùüûç])([A-Za-z0-9àäâæèéëêìòöôœùüûçÀÄÂÆßÈÉËÊÌÖÔŒÙÜÛ]*)>/u1L2/gc

似乎在这里解决问题。

由于您已在首字母捕获组中使用的范围内明确包含了大写字符,因此您的模式将匹配 foo Foo。从该范围中删除大写字符似乎可以解决您的直接问题。

仅匹配非titlecase单词,您想匹配那些启动的(a)使用小写字母或(b)使用 yppercase Letters匹配。以下将执行此操作(添加重音字母和数字来品尝):

b([A-Z])([A-Z][A-Za-z]*)|b([a-z])([a-zA-Z]+)

,但是有些单词匹配组12,其他单词在34上。我不使用vim,所以我不能说它是否会让您用这种模式代替。(例如,u13L24;四个中只有两个将是非空的)

最新更新