首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Utf8中CamelCase (WikiWord)的正确正则表达式

Utf8中CamelCase (WikiWord)的正确正则表达式
EN

Stack Overflow用户
提问于 2011-06-12 15:52:06
回答 1查看 918关注 0票数 4

这里有一个关于CamelCase regex的问题。结合tchrist post,我想知道什么是正确的utf-8 CamelCase

从(brian d foy's)正则表达式开始:

代码语言:javascript
复制
/
    \b          # start at word boundary
    [A-Z]       # start with upper
    [a-zA-Z]*   # followed by any alpha

    (?:  # non-capturing grouping for alternation precedence
       [a-z][a-zA-Z]*[A-Z]   # next bit is lower, any zero or more, ending with upper
          |                     # or 
       [A-Z][a-zA-Z]*[a-z]   # next bit is upper, any zero or more, ending with lower
    )

    [a-zA-Z]*   # anything that's left
    \b          # end at word 
/x

并修改为:

代码语言:javascript
复制
/
    \b          # start at word boundary
    \p{Uppercase_Letter}     # start with upper
    \p{Alphabetic}*          # followed by any alpha

    (?:  # non-capturing grouping for alternation precedence
       \p{Lowercase_Letter}[a-zA-Z]*\p{Uppercase_Letter}   ### next bit is lower, any zero or more, ending with upper
          |                  # or 
       \p{Uppercase_Letter}[a-zA-Z]*\p{Lowercase_Letter}   ### next bit is upper, any zero or more, ending with lower
    )

    \p{Alphabetic}*          # anything that's left
    \b          # end at word 
/x

标记为#的行有问题。

此外,当假设大于数字和下划线时,如何修改正则表达式与小写字母等效,因此W2X3是一个有效的CamelCase单词。

更新: (ysth评论)

下一个,

  • any:意为“大写或小写或数字或下划线”

正则表达式应该与CamelWord、CaW匹配。

以大写letter

  • optional any

  • lowercase字母或数字开头的
  • 或underscore
  • optional any
  • 大写大写letter
  • optional任何

请不要标记为重复,因为它不是。 (和答案)只考虑ascii。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-12 18:19:13

我真的不知道你想做什么,但这应该更接近你的初衷。不过,我还是不知道你用它做什么。

代码语言:javascript
复制
m{
    \b
    \p{Upper}      #  start with uppercase code point (NOT LETTER)

    \w*            #  optional ident chars 

    # note that upper and lower are not related to letters
    (?:  \p{Lower} \w* \p{Upper}
      |  \p{Upper} \w* \p{Lower}
    )

    \w*

    \b
}x

永远不要使用[a-z]。事实上,不要使用\p{Lowercase_Letter}\p{Ll},因为它们与更理想和更正确的\p{Lowercase}\p{Lower}不一样。

请记住,\w实际上只是一个别名

代码语言:javascript
复制
[\p{Alphabetic}\p{Mark}\p{Decimal_Number}\p{Letter_Number}\p{Connector_Punctuation}]
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6322906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档