在正则表达式中,(?=...)
是一个正向肯定预查(positive lookahead)的语法结构。它用于在匹配字符串时,查找某个位置后面是否跟着特定的模式,而不消耗实际的字符。
具体来说,(?=PM)
匹配一个数字序列(\d+
),但该数字序列后面必须紧跟着字符串 “PM”。这种预查会在匹配的时候向前看,并确定某个位置后面是否满足预期的条件。
举个例子,假设有以下文本:
12PM 3PM 6PM
如果使用正则表达式 \d+(?=PM)
进行匹配,它将匹配到以下结果:
需要注意的是,正向肯定预查只是用来判断某个位置后面的模式是否匹配,它并不会包含在最终的匹配结果中。因此,预查部分(即 “PM”)不会包含在匹配的结果中,只有数字序列会被捕获。
import re
res = re.findall("\d+(?=PM)", "23PM 42ji")
print(res)
# ['23']
负向先行断言(negative lookahead)是正则表达式的一种语法结构,用于在匹配字符串时,查找某个位置后面是否不跟着特定的模式。它与负向后行断言类似,但是用于否定条件。
负向先行断言的语法结构是 (?!...)
,其中 ...
表示要匹配的模式。
举个例子,假设我们想匹配一个字符串中不跟着 “xyz” 的数字序列。我们可以使用负向先行断言来实现这个目标。
正则表达式:\d+(?!xyz)
这个正则表达式会匹配一个或多个数字,但要求它后面不跟着 “xyz”。下面是一些例子来说明匹配情况:
负向先行断言允许我们在匹配过程中限制某个位置后面的内容,以满足特定的条件。
import re
res = re.findall("\d+(?!PM)", "23PM 42ji")
print(res)
# ['2', '42']
负向后行断言是正则表达式的一种语法结构,用于在匹配字符串时,查找某个位置前面是否不跟着特定的模式。它类似于正向肯定预查,但是用于否定条件。
假设我们想匹配一个字符串中不紧跟着 “abc” 的 “def”。我们可以使用负向后行断言来实现这个目标。
正则表达式:(?
这个正则表达式会匹配 “def”,但是要求它前面的三个字符不是 “abc”。下面是一些例子来说明匹配情况:
负向后行断言允许我们在匹配过程中限制某个位置前面的内容,以满足特定的条件。
import re
res = re.findall(r'(?, "abcPM 23pm")
print(res)
# []
正向后行断言(positive lookbehind)是正则表达式的一种语法结构,用于在匹配字符串时,查找某个位置之前是否跟着特定的模式。它类似于正向肯定预查,但是用于前面的条件。
正向后行断言的语法结构是 (?<=...)
,其中 ...
表示要匹配的模式。
举个例子,假设我们想匹配一个字符串中紧跟着 “abc” 的 “def”。我们可以使用正向后行断言来实现这个目标。
正则表达式:(?<=abc)def
这个正则表达式会匹配 “def”,但要求它前面的三个字符是 “abc”。下面是一些例子来说明匹配情况:
正向后行断言允许我们在匹配过程中限制某个位置之前的内容,以满足特定的条件。需要注意的是,断言部分(即 “abc”)不会包含在最终的匹配结果中,只有断言后面的部分会被捕获。
import re
res = re.findall("(?<=23)\w+", "23PM 42ji")
print(res)
在正则表达式中,(?=...)
是一个正向肯定预查(positive lookahead)的语法结构。它用于在匹配字符串时,查找某个位置后面是否跟着特定的模式,而不消耗实际的字符。
具体来说,(?=PM)
匹配一个数字序列(\d+
),但该数字序列后面必须紧跟着字符串 “PM”。这种预查会在匹配的时候向前看,并确定某个位置后面是否满足预期的条件。
举个例子,假设有以下文本:
12PM 3PM 6PM
如果使用正则表达式 \d+(?=PM)
进行匹配,它将匹配到以下结果:
需要注意的是,正向肯定预查只是用来判断某个位置后面的模式是否匹配,它并不会包含在最终的匹配结果中。因此,预查部分(即 “PM”)不会包含在匹配的结果中,只有数字序列会被捕获。
import re
res = re.findall("\d+(?=PM)", "23PM 42ji")
print(res)
# ['23']
负向先行断言(negative lookahead)是正则表达式的一种语法结构,用于在匹配字符串时,查找某个位置后面是否不跟着特定的模式。它与负向后行断言类似,但是用于否定条件。
负向先行断言的语法结构是 (?!...)
,其中 ...
表示要匹配的模式。
举个例子,假设我们想匹配一个字符串中不跟着 “xyz” 的数字序列。我们可以使用负向先行断言来实现这个目标。
正则表达式:\d+(?!xyz)
这个正则表达式会匹配一个或多个数字,但要求它后面不跟着 “xyz”。下面是一些例子来说明匹配情况:
负向先行断言允许我们在匹配过程中限制某个位置后面的内容,以满足特定的条件。
import re
res = re.findall("\d+(?!PM)", "23PM 42ji")
print(res)
# ['2', '42']
负向后行断言是正则表达式的一种语法结构,用于在匹配字符串时,查找某个位置前面是否不跟着特定的模式。它类似于正向肯定预查,但是用于否定条件。
假设我们想匹配一个字符串中不紧跟着 “abc” 的 “def”。我们可以使用负向后行断言来实现这个目标。
正则表达式:(?
这个正则表达式会匹配 “def”,但是要求它前面的三个字符不是 “abc”。下面是一些例子来说明匹配情况:
负向后行断言允许我们在匹配过程中限制某个位置前面的内容,以满足特定的条件。
import re
res = re.findall(r'(?, "abcPM 23pm")
print(res)
# []
正向后行断言(positive lookbehind)是正则表达式的一种语法结构,用于在匹配字符串时,查找某个位置之前是否跟着特定的模式。它类似于正向肯定预查,但是用于前面的条件。
正向后行断言的语法结构是 (?<=...)
,其中 ...
表示要匹配的模式。
举个例子,假设我们想匹配一个字符串中紧跟着 “abc” 的 “def”。我们可以使用正向后行断言来实现这个目标。
正则表达式:(?<=abc)def
这个正则表达式会匹配 “def”,但要求它前面的三个字符是 “abc”。下面是一些例子来说明匹配情况:
正向后行断言允许我们在匹配过程中限制某个位置之前的内容,以满足特定的条件。需要注意的是,断言部分(即 “abc”)不会包含在最终的匹配结果中,只有断言后面的部分会被捕获。
import re
res = re.findall("(?<=23)\w+", "23PM 42ji")
print(res)