基本上我不会只接受这样的正则表达式:
Dog
Cat_Dog
Cat_Dog_Mouse
允许使用数字。 [0-9]并被视为单词
Dog_003 -> OK
Dog003 -> NOT OK
Dog_003_ -> NOT OK
这是不允许的:
DoG
DOg
DOG (only first letter is uppercase)
Cat_Dog_
_Cat_Dog_ (_ can be only between words)
它将在Python中使用。
我的解决方案
reTitle2 = re.compile(
"""
^([A-Z]{1}|[A-Z]{1}[a-z]*|[0-9]+) # first part
(_[A-Z]{1}|_[A-Z]{1}[a-z]*|_[0-9]+)* # zero or more times
([A-Z]{1}|[A-Z]{1}[a-z]*|[0-9]+){0,1}$ # last part
"""
, re.UNICODE | re.VERBOSE)
有一些冗余部分,但我更容易理解。
答案 0 :(得分:3)
正则表达式是:
[A-Z][a-z]*(_([A-Z][a-z]*|[0-9]+))*
或者,如果允许003_Dog
:
([A-Z][a-z]*|[0-9]+)(_([A-Z][a-z]*|[0-9]+))*
答案 1 :(得分:1)
我的解决方案
reTitle2 = re.compile(
"""
^([A-Z]{1}|[A-Z]{1}[a-z]*|[0-9]+) # first part
(_[A-Z]{1}|_[A-Z]{1}[a-z]*|_[0-9]+)* # zero or more times
([A-Z]{1}|[A-Z]{1}[a-z]*|[0-9]+){0,1}$ # last part
"""
, re.UNICODE | re.VERBOSE)
有一些冗余部分,但我更容易理解。