擅长:python、mysql、java
<p>当然,上面所有的评论员都是正确的:没有空格或单词之间其他明确分隔符的标签(尤其是在英语中)常常是模棱两可的,而且在所有情况下都无法正确解析。在</p>
<p>然而,单词表的想法实施起来相当简单,可能会产生有用的(尽管有时是错误的)结果,因此我实现了一个快速版本:</p>
<pre><code>wordList = '''awesome day of my life because i am great something some
thing things unclear sun clear'''.split()
wordOr = '|'.join(wordList)
def splitHashTag(hashTag):
for wordSequence in re.findall('(?:' + wordOr + ')+', hashTag):
print ':', wordSequence
for word in re.findall(wordOr, wordSequence):
print word,
print
for hashTag in '''awesome-dayofmylife iamgreat something
somethingsunclear'''.split():
print '###', hashTag
splitHashTag(hashTag)
</code></pre>
<p>打印:</p>
^{pr2}$
<p>正如你所见,它落入了qstebom设置的陷阱中;-)</p>
<p>编辑:</p>
<p>对上述代码的一些解释:</p>
<p>变量<code>wordOr</code>包含由管道符号(<code>|</code>)分隔的所有单词的字符串。在正则表达式中表示“其中一个单词”。在</p>
<p>第一个<code>findall</code>得到一个表示“一个或多个单词序列”的模式,因此它与“dayofmylife”之类的内容相匹配。<code>findall</code>找到所有这些序列,所以我对它们进行迭代(<code>for wordSequence in …</code>)。对于每个单词序列,我搜索序列中的每个单词(也使用<code>findall</code>)并打印该单词。在</p>