<p>基本上,我不会使用只接受以下内容的正则表达式:</p>
<pre><code>Dog
Cat_Dog
Cat_Dog_Mouse
</code></pre>
<p>数字是允许的。[0-9]和被视为单词</p>
<pre><code>Dog_003 -> OK
Dog003 -> NOT OK
Dog_003_ -> NOT OK
</code></pre>
<p>这是不允许的:</p>
<pre><code>DoG
DOg
DOG (only first letter is uppercase)
Cat_Dog_
_Cat_Dog_ (_ can be only between words)
</code></pre>
<p>它将在Python中使用。你知道吗</p>
<p><strong>我的解决方案</p>
<pre><code>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)
</code></pre>
<p>有一些多余的部分,但我使它更容易理解。你知道吗</p>