📜  Python - 正则表达式回顾

📅  最后修改于: 2022-05-13 01:55:35.679000             🧑  作者: Mango

Python - 正则表达式回顾

Regex Lookbehind在Python正则表达式 (re) 中用作断言,以确定模式是否落后于解析器当前位置的右侧,即成功或失败。他们不匹配任何东西。因此,Regex Lookbehind 和 Lookahead 被称为零宽度断言。

句法:

# Positive lookbehind
(?<=)

# Positive lookahead
(?=)

在这篇文章中,我们将讨论 regex lookbehind。

示例 1:

Python3
# importing regex
import re
  
# Regex Lookbehind example
example = re.search(r'(?<=geeks)\w', 
                    'geeksforgeeks')
  
print(example.group())
print("Pattern found from index", 
      example.start(), example.end())


Python3
# importing regex
import re
  
# Regex Lookbehind example
example = re.search(r'(?<=geeks)\d', 
                    'geeksforgeeks')
print(example)


Python3
import re
  
# Using lookbehind
example1 = re.search(r'(?<=[a-z])\d',
                     "geeks12")
print(example1.group())
  
# Without using lookbehind
example2 = re.search(r'([a-z])\d',
                     "geeks12")
print(example2.group())


Python3
import re
  
# Lookbehind
example1 = re.search('(?<=[a-z])geeks', 
                     'geeksforgeeks')
print(example1.group())
  
# Negative Lookbehind
example2 = re.search('(?


输出:



f
Pattern found from index 5 6

正则表达式后视断言(?<=geeks)指定在任何单词字符('\w') 之前的内容必须是 'geeks' 字符串。在这种情况下,它是字符'f' 之前出现的 'geeks'字符串。

示例 2:

蟒蛇3

# importing regex
import re
  
# Regex Lookbehind example
example = re.search(r'(?<=geeks)\d', 
                    'geeksforgeeks')
print(example)

输出:

None

在上面的例子中,输出是 None 因为在 'geeks' 字符串前面没有十进制数字。

后视部分不是搜索字符串的一部分。当您不希望输出返回搜索字符串存在的后视部分但希望使用它来匹配特定部分前面的模式时,它们很重要。下面的例子将说明这一点:

示例 3:

蟒蛇3

import re
  
# Using lookbehind
example1 = re.search(r'(?<=[a-z])\d',
                     "geeks12")
print(example1.group())
  
# Without using lookbehind
example2 = re.search(r'([a-z])\d',
                     "geeks12")
print(example2.group())

输出:

1
s1

使用后视生成的输出为“1”,而不使用后视生成的输出为“s1”。任何十进制数字之前的任何单词字符(\w) 都被正则表达式消耗,因此它不会成为搜索字符串的一部分。



负面回顾

Negative Lookbehind 与lookbehind 相反。这是为了确保搜索字符串前面没有

句法:

(?) 
Negative Lookbehind

示例 4:

蟒蛇3

import re
  
# Lookbehind
example1 = re.search('(?<=[a-z])geeks', 
                     'geeksforgeeks')
print(example1.group())
  
# Negative Lookbehind
example2 = re.search('(?

输出:

geeks
None