我正在使用正則表達式來匹配關鍵字。是否可以在前25個字符內檢查此關鍵字?REGEX檢查前25個字符內的短語
例如,我想找到"APPLE"
:
'Johnny picked an APPLE from the tree'
- 找到匹配(第25個字符以內)
'Johnny picked something from a tree that had an APPLE'
- 未找到(因爲蘋果不在前25個字符之內存在)。
這是否有語法?
我正在使用正則表達式來匹配關鍵字。是否可以在前25個字符內檢查此關鍵字?REGEX檢查前25個字符內的短語
例如,我想找到"APPLE"
:
'Johnny picked an APPLE from the tree'
- 找到匹配(第25個字符以內)
'Johnny picked something from a tree that had an APPLE'
- 未找到(因爲蘋果不在前25個字符之內存在)。
這是否有語法?
是的。您在關鍵字前面添加0到25個字符(關鍵字)的「任意」字符。
我不確定這是否是實際的Python語法,但RE應該是^.{0,20}APPLE
。
編輯:澄清
^.{0,20}APPLE
應該尋找一個字符串時使用。在Python中使用它。.{0,20}APPLE.*
匹配整個字符串時應該使用。另一個編輯:顯然Python只有substring模式,所以^
錨是必要的。
如果你正在做're.search',你想要'^',如果做're.match'則不需要。在任何情況下,尾隨'。*'不是必需的,除非由於某種原因想要匹配其餘行。 – Dougal 2012-08-01 07:55:53
這是行不通的。你不能在正則表達式中檢查匹配部分的長度。你寫的只是:*從0到20任意符號* – 2012-08-01 07:57:42
我寫的是0到20之間的任何符號,後跟5個字母的關鍵字。這與前25個字符中的任何位置的關鍵字相同。 (也許你錯過了更新;起初我沒有正確地錨定表達式(^ xxx)或(xxx。*))。 – user1252434 2012-08-01 07:59:20
嘗試使用你的字符串slice:
>>> import re
>>> string1 = "Johnny picked an APPLE from the tree"
>>> string2 = "Johnny picked something from a tree that had an APPLE"
>>> re.match(".*APPLE.*", string1[:25]) # Match
<_sre.SRE_Match object at 0x2364030>
>>> re.match(".*APPLE.*", string2[:25]) # Does not match
當你在'APPLE''上尋找匹配時,我看不到需要開始和結尾的'。*' – jamylak 2012-08-01 08:14:02
re.match('APPLE',...)只有在單詞APPLE在字符串的開頭; re.match('。* APPLE',...)將起作用。實際上,更好的方法是使用re.search()而不是re.match()。 - REF:http://docs.python.org/library/re.html#search-vs-match – FLOZz 2012-08-04 19:59:39
ahh是的,當然使用're.search' – jamylak 2012-08-05 00:27:27
你就不能對前25個字符運行正則表達式? Python中是什麼,'[:25]'? – Naltharial 2012-08-01 07:52:50