ure - 正则表达式
2023-08-31
该模块通过正则表达式匹配数据。
目前支持的操作符较少,部分操作符暂不支持。
示例:
import ure
res = '''
$GNRMC,133648.00,A,3149.2969,N,11706.9027,E,0.055,,311020,,,A,V*18
$GNGGA,133648.00,3149.2969,N,11706.9027,E,1,24,1.03,88.9,M,,M,,*6C
$GNGLL,3149.2969,N,11706.9027,E,133648.00,A,A*7A
$GNGSA,A,3,31,26,11,194,27,195,08,09,03,193,04,16,1.41,1.03,0.97,1*31
'''
r = ure.search("GNGGA(.+?)M", res)
print(r.group(0))
编译并生成正则表达式对象
ure.compile
ure.compile(regex)
用于编译正则表达式,生成一个正则表达式对象,供 match() 和 search() 这两个函数使用。
参数描述:
regex
- 正则表达式,字符串类型。
匹配
ure.match
ure.match(regex, string)
将正则表达式对象 与 string 匹配,匹配通常从字符串的起始位置进行。
参数描述:
regex
- 正则表达式,字符串类型。string
- 需要匹配的字符串数据。
返回值描述:
- 匹配成功返回一个匹配的对象,否则返回None。
查找
ure.search
ure.search(regex, string)
扫描整个字符串并返回第一个成功的匹配。
参数描述:
regex
- 正则表达式,字符串类型。string
- 需要查找的字符串数据。
返回值描述:
- 匹配成功返回一个匹配的对象,否则返回None。
匹配单个字符串
match.group
match.group(index)
匹配 match() 和 serach() 方法返回的对象。
参数描述:
index
- 整型,正则表达式中,group()用来提出分组截获的字符串, index=0返回整体,根据编写的正则表达式进行获取,当分组不存在时会抛出异常。
返回值描述:
- 返回匹配的整个表达式的字符串。
常量
支持的操作符
‘.’
- 字符类型,匹配任意字符。‘[]’
- 字符类型,匹配字符集合,支持单个字符和一个范围,包括负集。‘^’
- 字符类型,匹配字符串的开头。‘$’
- 字符类型,匹配字符串的结尾。‘?’
- 字符类型,匹配零个或前面的子模式之一。‘*’
- 字符类型,匹配零个或多个先前的子模式。‘+’
- 字符类型,匹配一个或多个先前的子模式。‘??’
- 字符类型,非贪婪版本的 ? ,匹配0或1。‘*?’
- 字符类型,非贪婪版本的*,匹配零个或多个。‘+?’
- 字符类型,非贪婪版本的+,匹配一个或多个。‘\|’
- 字符类型,匹配该操作符的左侧子模式或右侧子模式。‘\d’
- 字符类型,数字匹配。‘\D’
- 字符类型,非数字匹配。‘\s’
- 字符类型,匹配空格。‘\S’
- 字符类型,匹配非空格。‘\w’
- 字符类型,匹配”单词字符” (仅限ASCII)。‘\W’
- 字符类型,匹配非“单词字符”(仅限ASCII)。
不支持的操作符
‘{m,n}’
- 重复次数。‘(?P<name>...)’
- 命名组。‘(?:...)’
- 非捕获组。‘\b’
- 更高级的断言。‘\B’
- 更高级的断言。‘\r’
- 特殊字符转义,改用Python自己的转义。‘\n’
- 特殊字符转义,改用Python自己的转义。