程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了RegEx拆分camelCase或TitleCase(高级)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决RegEx拆分camelCase或TitleCase(高级)?

开发过程中遇到RegEx拆分camelCase或TitleCase(高级)的问题如何解决?下面主要结合日常开发的经验,给出你关于RegEx拆分camelCase或TitleCase(高级)的解决方法建议,希望对你解决RegEx拆分camelCase或TitleCase(高级)有所启发或帮助;

以下正则表达式适用于所有上述示例:

public static voID main(String[] args)
{
    for (String w : "camelValue".split("(?<!(^|[A-Z]))(?=[A-Z])|(?<!^)(?=[A-Z][a-z])")) {
        System.out.println(w);
    }
}   

它的作用是强制后面的否定后缀不仅忽略字符串开头的匹配项,而且还忽略在大写字母后跟另一个大写字母的匹配项。这样可以处理“ VALUE”之类的情况。

正则表达式的第一部分本身由于无法在“ RPC”和“ Ext”之间分割而在“ eclipseRCPExt”上失败。这是第二个条款的目的:(?<!^)(?=[A-Z][a-z]。此子句允许在每个大写字母前跟一个小写字母前进行拆分,但字符串的开头除外。

解决方法

我找到了一个出色的RegEx来提取camelCase或TitleCase表达的一部分。

 (?<!^)(?=[A-Z])

它按预期工作:

  • value -> value
  • camelValue -> camel / Value
  • TitleValue -> Title / Value

例如,使用Java:

String s = "loremIpsum";
words = s.split("(?<!^)(?=[A-Z])");
//words equals words = new String[]{"lorem","Ipsum"}

我的问题是在某些情况下它不起作用:

  • 情况1:VALUE-> V / A / L / U / E
  • 情况2:eclipseRCPExt-> eclipse / R / C / P / Ext

在我看来,结果应该是:

  • 情况1:VALUE
  • 情况2:日食/ RCP /外部

换句话说,给定n个大写字符:

  • 如果n个字符后跟小写字符,则组应为:(n-1个字符)/(第n个字符+小写字符)
  • 如果n个字符位于末尾,则该组应为:(n个字符)。
    关于如何改善此正则表达式的任何想法吗?

大佬总结

以上是大佬教程为你收集整理的RegEx拆分camelCase或TitleCase(高级)全部内容,希望文章能够帮你解决RegEx拆分camelCase或TitleCase(高级)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: