python中的单词边界是什么。有人可以用例子解释一下,
实施例:1
>>> x = '456one two three123'
>>> y=re.search(r"\btwo\b",x)
>>> y
<_sre.SRE_Match object at 0x2aaaaab47d30>
实施例:2
>>> y=re.search(r"two",x)
>>> y
<_sre.SRE_Match object at 0x2aaaaab47d30>
示例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
答案 0 :(得分:7)
&#34;字边界&#34;意思是它所说的:一个词的boundary,即开头或结尾。
它与输入中的任何实际字符都不匹配,但只有在当前匹配位置位于单词的开头或结尾时才会匹配。
这很重要,因为与刚刚匹配的空格不同,它也会在整个输入的开头或结尾处匹配。
因此'\bfoo'
将匹配'foobar'
和'foo bar'
以及'bar foo'
,但不会匹配'barfoo'
。
'foo\b'
将匹配'foo bar'
和'bar foo'
以及'barfoo'
,但不会匹配'foobar'
。
答案 1 :(得分:1)
试试这个:
ip="192.168.254.1234"
res = re.findall("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}",ip)
print(res)
请注意我正确如何逃脱点。 找到ip是因为正则表达式并不关心最后1-3位后的内容。
现在:
ip="192.168.254.1234"
res = re.findall("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b",ip)
print(res)
这不起作用,因为最后1-3位数字不是在边界处结束。