如何在不拆分 McDonald 的情况下将 camelCase 与 Regex 拆分?

How can I split camelCase with Regex without splitting McDonald?

使用以下模式我可以拆分驼峰式:(\w*?[a-z]{1})([A-Z]{1})

但是我怎样才能避免匹配像 McDonald 或 DeSanto 这样的常见名字呢?

我在追求:

Match: camelCase
Match: NewsToday
No Match: IBM
No Match: McDonalds (matches pattern above)
No Match: DeSanto   (matches pattern above)

您可以使用

\b(?!Mc|De)(\w*?[a-z])([A-Z])
\b(?!(?:Mc|De)[A-Z])(\w*?[a-z])([A-Z])

参见regex demo #1 and regex demo #2

详情

  • \b - 单词边界
  • (?!Mc|De) - 如果 McDe 紧邻当前位置
  • 的右侧,则匹配失败的否定前瞻
  • (\w*?[a-z]) - 第 1 组:尽可能少的零个或多个单词字符,然后是小写字母
  • ([A-Z]) - 第 2 组:大写字母。