正则表达式,其中单词的第一个字母是大写的,并且单词被_

2024-10-03 04:25:15 发布

您现在位置:Python中文网/ 问答频道 /正文

基本上,我不会使用只接受以下内容的正则表达式:

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)

有一些多余的部分,但我使它更容易理解。你知道吗


Tags: reonlynotok数字单词catfirst
2条回答

正则表达式是:

[A-Z][a-z]*(_([A-Z][a-z]*|[0-9]+))*

或者,如果允许003_Dog

([A-Z][a-z]*|[0-9]+)(_([A-Z][a-z]*|[0-9]+))*

我的解决方案

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)

有一些多余的部分,但我使它更容易理解。你知道吗

相关问题 更多 >