在Python中,正则表达式匹配长度超过八个字母的任何内容

mag*_*tar 15 python regex

尽管尝试掌握grep和相关的GNU软件,但我还没有接近掌握正则表达式.我喜欢它们,但我发现它们有点像眼睛一样.

我想这个问题对某些人来说并不难,但我花了好几个小时试图弄清楚如何在我最喜欢的书中搜索超过一定长度的单词,最后,我想出了一些非常丑陋的代码:

twentyfours = [w for w in vocab if re.search('^........................$', w)]
twentyfives = [w for w in vocab if re.search('^.........................$', w)]
twentysixes = [w for w in vocab if re.search('^..........................$', w)]
twentysevens = [w for w in vocab if re.search('^...........................$', w)]
twentyeights = [w for w in vocab if re.search('^............................$', w)]
Run Code Online (Sandbox Code Playgroud)

...每条长度的一条线,从一定长度到另一条长度.

我想要的是能够说'给我每个词的长度超过八个字母.' 我该怎么办?

ken*_*ytm 23

你不需要正则表达式.

result = [w for w in vocab if len(w) >= 8]
Run Code Online (Sandbox Code Playgroud)

但如果必须使用正则表达式:

rx = re.compile('^.{8,}$')
#                  ^^^^ {8,} means 8 or more.
result = [w for w in vocab if rx.match(w)]
Run Code Online (Sandbox Code Playgroud)

有关语法的详细信息,请参见http://www.regular-expressions.info/repeat.html{a,b}.


Ivo*_*ijk 13

\ w将匹配字母和字符,{min,[max]}允许您定义大小.一个表达式

\w{9,}
Run Code Online (Sandbox Code Playgroud)

将给出9个字符或更多的所有字母/数字组合


unb*_*eli 5

.{9,}对于"超过八个", .{8,}对于"八个或更多"
或者只是len(w) > 8