尽管尝试掌握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)]
......每条长度的一条线,从一定长度到另一条长度。
我想要的是能够说'给我每个词的长度大于八个字母。'我该怎么做?
答案 0 :(得分:21)
你不需要正则表达式。
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。
答案 1 :(得分:12)
\ w将匹配字母和字符,{min,[max]}允许您定义大小。像
这样的表达式\w{9,}
将提供9个字符或更多字母的所有字母/数字组合
答案 2 :(得分:5)
.{9,}
代表“超过八个”,.{8,}
代表“八个或更多”
或者只是len(w) > 8
答案 3 :(得分:3)
^.{8,}$
这将匹配至少包含8个字符的内容。您也可以在昏迷后放置一个数字来限制上限或删除第一个数字以不限制下限。
答案 4 :(得分:0)
如果你想使用正则表达式
result = [ w for w in vocab if re.search('^.{24}',w) ]
{x}表示匹配x个字符。 但最好使用len(w)