繁体   English   中英

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

[英]Regular expression matching anything greater than eight letters in length, in Python

尽管尝试掌握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)]

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

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

你不需要正则表达式。

result = [w for w in vocab if len(w) >= 8]

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

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

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

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

\w{9,}

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

.{9,}代表“八个以上”, .{8,}代表“八个或更多”
或者只是len(w) > 8

^.{8,}$

这将匹配至少包含8个字符的内容。 您也可以在昏迷后放置一个数字来限制上限或删除第一个数字以不限制下限。

如果你想使用正则表达式

result = [ w for w in vocab if re.search('^.{24}',w) ]

{x}表示匹配x个字符。 但是使用len(w)可能更好

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM