Splitting CamelCase with regex

前端 未结 4 736
佛祖请我去吃肉
佛祖请我去吃肉 2021-01-11 20:18

I have this code to split CamelCase by regular expression:

Regex.Replace(input, \"(?<=[a-z])([A-Z])\", \" $1\", RegexOptions.Compiled).Trim();
         


        
4条回答
  •  耶瑟儿~
    2021-01-11 21:14

    Unicode-aware

    (?=\p{Lu}\p{Ll})|(?<=\p{Ll})(?=\p{Lu})
    

    Breakdown:

    (?=               # look-ahead: a position followed by...
      \p{Lu}\p{Ll}    #   an uppercase and a lowercase
    )                 #
    |                 # or
    (?<=              # look-behind: a position after...
      \p{Ll}          #   an uppercase
    )                 #
    (?=               # look-ahead: a position followed by...
      \p{Lu}          #   a lowercase
    )                 #
    

    Use with your regex split function.


    EDIT: Of course you can replace \p{Lu} with [A-Z] and \p{Ll} with [a-z] if that's what you need or your regex engine does not understand Unicode categories.

提交回复
热议问题