如何在不拆分 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)
- 如果 Mc
或 De
紧邻当前位置 的右侧,则匹配失败的否定前瞻
(\w*?[a-z])
- 第 1 组:尽可能少的零个或多个单词字符,然后是小写字母
([A-Z])
- 第 2 组:大写字母。
使用以下模式我可以拆分驼峰式:(\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)
- 如果Mc
或De
紧邻当前位置 的右侧,则匹配失败的否定前瞻
(\w*?[a-z])
- 第 1 组:尽可能少的零个或多个单词字符,然后是小写字母([A-Z])
- 第 2 组:大写字母。