【pyparsing使用指导】Word使用细探

本节我们就详细来看一下Word的用法,其他很多函数可以举一反三。

函数本身是有注释介绍的


Word介绍.PNG

我们来看一下几个参数是怎么使用的

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']

因为原版资料较少,如果上述参数有误,欢迎指正

你可能感兴趣的:(【pyparsing使用指导】Word使用细探)