本節(jié)我們就詳細(xì)來看一下Word的用法,其他很多函數(shù)可以舉一反三蒜埋。
函數(shù)本身是有注釋介紹的
我們來看一下幾個參數(shù)是怎么使用的
initChars
這個就是常用的入?yún)⒄荩硎酒ヅ淠P?/p>
min
首先籽孙,需要注意,min不可以為非正整數(shù)讲冠,否則拋ValueError異常
min指定了匹配可接受的最短長度
print Word(printables, min=1).parseString('hello world!')
表示找長度>=1的字符串竿开,所以可以匹配到['hello']
print Word(printables, min=6).parseString('hello world!')
就匹配不到玻熙,拋出ParseException異常
max
指定了匹配可接受的最大長度
print Word(printables, max=6).parseString('hello world!')
表示找長度<=6的字符串,所以可以匹配到['hello']
print Word(printables, max=1).parseString('hello world!')
就匹配不到嗦随,拋出ParseException異常
值得注意的是列荔,如果max=0,表示最大長度不受限制枚尼。
bodyChars
用于匹配的字符集合贴浙。不過一般不使用這個參數(shù)。
這個原理是使用initChars先做匹配署恍,然后將結(jié)果再根據(jù)bodyChars和excludeChars做篩選崎溃。
bodyChars指明匹配到的結(jié)果必須在bodyChars中的字符集合內(nèi), 這個匹配是自左向右的,一直匹配到不符合為止锭汛。
例如笨奠, print Word(printables, bodyChars='ehol').parseString('hello world!')
hello包含這四個字母ehol袭蝗,所以結(jié)果為['hello']
又如唤殴, print Word(printables, bodyChars='hol').parseString('hello world!')
因為匹配不到e,所以第一個字母匹配后就結(jié)束了朵逝。結(jié)果為['h']
如果bodyChars不包含任何匹配的字符呢蔚袍?
print Word(printables, bodyChars='abc').parseString('hello world!')
因為initChars已經(jīng)匹配出了hello,但是bodyChars中無一命中配名。但是min默認(rèn)為1啤咽,所以至少要選擇長度為1的字符串。所以結(jié)果為['h']
渠脉。
excludeChars
跟bodyChars含義相反宇整,是排除字符集合
例如,print Word(printables, excludeChars='o').parseString('hello world!')
,結(jié)果為['hell']
它也可以配合bodyChars一起使用
例如芋膘,print Word(printables,bodyChars='helo', excludeChars='ol').parseString('hello world!')
鳞青,結(jié)果['he']
exact
表示對匹配結(jié)果的截取長度,默認(rèn)為0为朋,表示不截取
例如臂拓,print Word(printables, exact=2).parseString('hello world!')
,結(jié)果['he']
asKeyword
表示匹配結(jié)果必須完全匹配bodyChars中的限制习寸,否則拋出ParseException異常
例如胶惰,print Word(printables, bodyChars='heol', asKeyword=True).parseString('hello world!')
結(jié)果為['hello']
因為原版資料較少,如果上述參數(shù)有誤霞溪,歡迎指正