簡體   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