擅长:python、mysql、java
<p>您可以使用以下正则表达式:</p>
<pre><code>(?:[^-\w]|^)(?P<part1>[a-zA-Z]+)-(?P<part2>[a-zA-Z]+)(?:[^-\w]|$)
(?: # non capturing group
[^-\w]|^ # a non-hyphen or the beginning of the string
)
(?P<part1>
[a-zA-Z]+ # at least a letter
)-(?P<part2>
[a-zA-Z]+
)
(?:[^-\w]|$) # either a non-hyphen character or the end of the string
</code></pre>
<ul>
<li>您的第一个问题是没有任何东西可以阻止<code>.</code>占用空间。<code>[a-zA-Z]</code>只选择字母,这样可以避免从一个单词跳到另一个单词。在</li>
<li>对于<code>pok-e-mon</code>的情况,您需要检查是否在匹配之前或之后没有连字符。在</li>
</ul>
<p>见<a href="http://regex101.com/r/vS8lF1" rel="nofollow">Demo here</a></p>