2014-12-30 120 views
1

我使用的parse庫跑進奇怪(我)的功能:它不匹配空字符串:Python的解析空字符串

>>> from parse import parse 
>>> parse('hi "{}"', 'hi "everybody"') 
<Result ('everybody',) {}> 
>>> parse('hi "{}"', 'hi ""') 
>>> 

有沒有一種方法,使用parse,得到它

>>> from re import match 
>>> match('hi "(.*)"', 'hi "everybody"').groups() 
('everybody',) 
>>> match('hi "(.*)"', 'hi ""').groups() 
('',) 
+0

的' 「」'內' '喜 「」''是不是空字符串。 – dursk

+0

@mattm問題是'''s之間的字符串是空的 – Barry

+0

不是。這就是我想說的。「''s之間沒有字符串,就像在字符串之間沒有字符串一樣。 'h'和'i'在'hi'中。 – dursk

回答

2

使用自定義類型轉換:

from parse import parse 
def zero_or_more_string(text): 
    return text 

zero_or_more_string.pattern = r".*" 
parse('hi "{:z}"', 'hi ""', { "z": zero_or_more_string }) 
以同樣的方式, re不匹配 ""之間的任何字符串

,你會得到這樣的:

<Result ('',) {}>