我最近刚开始学习Python,而且我已经“深入”到正则表达式了。我的任务似乎相当简单。我只需要编写一个正则表达式,从字符串中返回某些单词。规则如下:单词只能包含一组元音。换言之,这是一个不完美但简单的正则表达式,用于从文本中返回单音节单词。在
我相信我写的正则表达式并不遥远,但我只得到字符串的一部分,而不是完整的单词。示例如下:
>>> import re
>>> text = "A boy named Sue tried to kill a swamp monkey, but failed miserably. He then cried. Boo hoo."
>>> re.findall("[^aeiou][aeiou]{1,}[^aeiou]", text)
['boy', 'nam', 'Sue ', 'ried', 'to ', 'kil', ' a ', 'wam', 'mon', 'key', 'but', 'fail', 'mis', 'rab', 'He ', 'hen', 'ried', 'Boo ', 'hoo.']
正如你所看到的,结果是不正确的。它只是拆分字符串以适合我的正则表达式,而不是返回它来自的单词。此外,返回的一些字符串甚至不是来自符合我条件的单词。在
提前谢谢!在
这有点复杂(如果我理解您的要求):
然后您可以这样使用它:
^{pr2}$说明: 在
[^\W\d_aeiou]
有点难以理解:\w
匹配任何字母、数字或下划线。在\W
匹配\w
不匹配的任何字符。在[^\W]
因此与\w
匹配。但是我们现在可以向这个被否定的字符类添加更多的字符,这些字符应该从有效字符集中减去。在[^\W\d_aeiou]
因此匹配\w
匹配的任何内容,但是没有数字、下划线或元音。在[bcdfghjklmnpqrstvwxyz]
的好处是,\w
是Unicode感知的(在python3中,如果添加了re.U
标志,则通过python2中的请求来实现),因此不会局限于ASCII字母。在相关问题 更多 >
编程相关推荐