本节我们就详细来看一下Word的用法,其他很多函数可以举一反三。
函数本身是有注释介绍的
我们来看一下几个参数是怎么使用的
initChars
这个就是常用的入参,表示匹配模型
min
首先,需要注意,min不可以为非正整数,否则抛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
用于匹配的字符集合。不过一般不使用这个参数。
这个原理是使用initChars先做匹配,然后将结果再根据bodyChars和excludeChars做筛选。
bodyChars指明匹配到的结果必须在bodyChars中的字符集合内, 这个匹配是自左向右的,一直匹配到不符合为止。
例如, print Word(printables, bodyChars='ehol').parseString('hello world!')
hello包含这四个字母ehol,所以结果为['hello']
又如, print Word(printables, bodyChars='hol').parseString('hello world!')
因为匹配不到e,所以第一个字母匹配后就结束了。结果为['h']
如果bodyChars不包含任何匹配的字符呢?
print Word(printables, bodyChars='abc').parseString('hello world!')
因为initChars已经匹配出了hello,但是bodyChars中无一命中。但是min默认为1,所以至少要选择长度为1的字符串。所以结果为['h']
。
excludeChars
跟bodyChars含义相反,是排除字符集合
例如,print Word(printables, excludeChars='o').parseString('hello world!')
,结果为['hell']
它也可以配合bodyChars一起使用
例如,print Word(printables,bodyChars='helo', excludeChars='ol').parseString('hello world!')
,结果['he']
exact
表示对匹配结果的截取长度,默认为0,表示不截取
例如,print Word(printables, exact=2).parseString('hello world!')
,结果['he']
asKeyword
表示匹配结果必须完全匹配bodyChars中的限制,否则抛出ParseException异常
例如,print Word(printables, bodyChars='heol', asKeyword=True).parseString('hello world!')
结果为['hello']
因为原版资料较少,如果上述参数有误,欢迎指正
网友评论