繁体   English   中英

Python重新匹配字符串中的特定点

[英]Python re match at specific point in string

如果我在Python中有给定的字符串s ,是否可以轻松地检查正则表达式是否匹配从字符串中特定位置i开始的字符串?

我宁愿不将整个字符串从i切到末尾,因为它似乎没有很好的可扩展性(排除了我认为的re.match )。

re.match不直接支持此功能。 但是,如果使用re.compile预编译正则表达式(无论如何通常都是个好主意),则RegexObject的类似方法, match (和search )都采用可选的pos参数:

可选的第二个参数pos在开始搜索的字符串中给出一个索引; 它默认为0 这并不完全等同于切片字符串。 '^'模式字符在字符串的实际开头和换行符之后的位置匹配,但不一定在搜索要开始的索引处匹配。

例:

import re
s = 'this is a test 4242 did you get it'
pat = re.compile('[a-zA-Z]+ ([0-9]+)')
print pat.match(s, 10).group(0)

输出:

'test 4242'

尽管re.match不支持此功能,但是新的regex模块(旨在替换re模块)具有许多新功能,包括用于searchmatchsubsubn posendpos参数。 尽管尚未正式发布,但是regex模块可以pip安装,并且适用于2.5到3.4版本的Python。 这是一个例子:

>>> import regex

>>> regex.match(r'\d+', 'abc123def')

>>> regex.match(r'\d+', 'abc123def', pos=3)
<regex.Match object; span=(3, 6), match='123'>

>>> regex.match(r'\d+', 'abc123def', pos=3, endpos=5)
<regex.Match object; span=(3, 5), match='12'>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM