欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python中正則表達(dá)式?: ?= ?! 的用法

 更新時間:2025年04月17日 10:24:57   作者:SmallerFL  
正則表達(dá)式中使用的??:、?=?和??!?是三種不同的正則表達(dá)式語法,它們分別代表非捕獲組、正向前瞻斷言和負(fù)向前瞻斷言,下面就來介紹一下這三種的方法,感興趣的可以了解一下

正則表達(dá)式中使用的 ?:、?= 和 ?! 是三種不同的正則表達(dá)式語法,它們分別代表非捕獲組、正向前瞻斷言和負(fù)向前瞻斷言。

1. ?: 用法

(?:...) 是一種非捕獲組(non-capturing group)的語法。它用于將一部分正則表達(dá)式括在一起,但不將該部分作為單獨的捕獲組。這意味著即使匹配了這部分表達(dá)式,也不會在結(jié)果中創(chuàng)建新的捕獲組。

正則表達(dá)式中的捕獲組(capture group)是使用圓括號 () 包圍的一部分表達(dá)式。這些捕獲組在匹配到的字符串中標(biāo)記了特定的部分,并將其保存起來以供稍后使用。

如果還不清楚什么是捕獲組,下面給一個例子就清楚了:

import re

pattern = r'a(.*)test'
text = 'This is a good test.'

match = re.search(pattern, text)
if match:
    print("Found word:", match.groups())
# 輸出
# Found word: (' good ',)

在這個示例中,(.*) 是一個捕獲組,用于將a 和 test 中間的字符提取出來。

知道了捕獲組,那么非捕獲組也能猜出來了。有時你可能只想將表達(dá)式括在一起,但不想保存匹配結(jié)果。在這種情況下,可以使用非捕獲組 (?: ...)

示例:

import re

pattern = r'(?:abc)def'
text = 'abcdef'

match = re.search(pattern, text)
if match:
    print("Match found")

在這個示例中,(?:abc) 是一個非捕獲組,它將 abc 與 def 組合在一起進(jìn)行匹配,但不會作為單獨的捕獲組。

2. ?= 用法

?= 是正向前瞻斷言(positive lookahead assertion)。它用于匹配某個子表達(dá)式后的位置,但不包含匹配到的子表達(dá)式在最終的結(jié)果中。前瞻斷言用來確保某一部分的匹配被后續(xù)某一部分的條件匹配。

示例:

import re

pattern = r'abc(?=def)'
text = '.x abcdef123'
text2 = '.x abc1def123'

match = re.search(pattern, text)
if match:
    print("Match found:", match.group())
# 輸出
# Match found: abc

match = re.search(pattern, text2)
if not match:
    print("Match not found")
# 輸出
# Match not found

在這個示例中,abc(?=def) 使用了正向前瞻斷言。它將匹配 abc 后面跟著 def 的部分。在 abcdef 中,它匹配了 abc,因為 abc 后面是 def。

3. ?! 用法

?! 是負(fù)向前瞻斷言(negative lookahead assertion)。它用于確保某個子表達(dá)式不匹配之后的位置,而不包含匹配到的子表達(dá)式在最終的結(jié)果中。

用法示例:

import re

pattern = r'abc(?!def)'
text = 'abcxyz'
text2 = 'abcdef'

match = re.search(pattern, text)
if match:
    print("Match found:", match.group())
# 輸出
# Match found: abc

match = re.search(pattern, text2)
if not match:
    print("Match not found")
# 輸出
# Match not found

在這個示例中,abc(?!def) 使用了負(fù)向前瞻斷言。它將匹配 abc 后面不跟著 def 的部分。在 abcxyz 中,它匹配了 abc,因為 abc 后面沒有 def。

4. 總結(jié)

  • (?:...) 是非捕獲組,不會捕獲組內(nèi)的匹配結(jié)果。
  • ?= 是正向前瞻斷言,確保匹配后的位置滿足條件。
  • ?! 是負(fù)向前瞻斷言,確保匹配后的位置不滿足條件。

到此這篇關(guān)于python中正則表達(dá)式?: ?= ?! 的用法的文章就介紹到這了,更多相關(guān)python中正則?: ?= ?! 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相 

相關(guān)文章

最新評論