在python中使用regex时单词边界是什么

2024-10-01 11:28:00 发布

您现在位置:Python中文网/ 问答频道 /正文

python中的单词边界是什么?有人能举例说明一下吗

在示例:1在

>>> x = '456one two three123'
>>> y=re.search(r"\btwo\b",x)
>>> y
<_sre.SRE_Match object at 0x2aaaaab47d30>

在示例:2在

^{pr2}$

例3:

>>> ip="192.168.254.1234"
>>> if re.search(r"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b",ip):
...    print ip
...

例4:

>>> ip="192.168.254.1234"
>>> if re.search(r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}",ip):
...    print ip
192.168.254.1234

Tags: ipre示例searchifobjectmatch单词
2条回答

“单词边界”的意思是:单词的boundary,即开头或结尾。在

它不匹配输入中的任何实际字符,但仅当当前匹配位置在单词的开头或结尾时才匹配。在

这一点很重要,因为与只匹配空白不同,它也会在整个输入的开头或结尾处匹配。在

因此'\bfoo'将匹配'foobar'和{}和{},而不是{}。在

'foo\b'将匹配'foo bar'和{}和{},但不是{}。在

试试这个:

ip="192.168.254.1234"
res = re.findall("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}",ip)
print(res)

注意我是如何正确地逃过这些点的。 找到ip是因为regex不关心最后1-3位数字后面是什么。在

现在:

^{pr2}$

这不起作用,因为最后1-3位数字不是以边界结束的。在

相关问题 更多 >