python正则表达式——在非单词字符或连续破折号上拆分,但不在单个破折号上

Mic*_*chM 3 python regex

我希望将一个句子分成非单词字符(不包括破折号,这可能意味着连字符)和连续破折号的单词列表。我的意思是:“旋转木马”是一个词,而不是三个词;“条件--但是”是两个词:删除连续的破折号。

我尝试了以下方法,但不起作用: listofwords = [word for word in re.split('[^a-zA-Z0-9]|-{2,}',sentence)]

我可以提供一个例句: sentence = 'sample sentence---such as well-being {\t' 并且想要的结果是['sample', 'sentence', 'such', 'as', 'well-being']。

anu*_*ava 5

您可以使用此正则表达式:

\w+(?:-\w+)*
Run Code Online (Sandbox Code Playgroud)

正则表达式演示

代码:

p = re.compile(r'\w+(?:-\w+)*')
test_str = "sample sentence---such as well-being {   "

re.findall(p, test_str)
Run Code Online (Sandbox Code Playgroud)

输出:

['sample', 'sentence', 'such', 'as', 'well-being']
Run Code Online (Sandbox Code Playgroud)

  • **▲** 正确快速。 (2认同)