最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

1. ?: 用法

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

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

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

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 ',)

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

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

示例:

import re

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

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

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

2. ?= 用法

?= 是正向前瞻斷言(positive lookahead assertion)。它用于匹配某個(gè)子表達(dá)式后的位置,但不包含匹配到的子表達(dá)式在最終的結(jié)果中。前瞻斷言用來(lái)確保某一部分的匹配被后續(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

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

3. ?! 用法

?! 是負(fù)向前瞻斷言(negative lookahead assertion)。它用于確保某個(gè)子表達(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

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

4. 總結(jié)

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

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

相關(guān)文章

最新評(píng)論

措勤县| 安岳县| 白水县| 永修县| 梁河县| 石棉县| 彰武县| 桐庐县| 五台县| 静宁县| 梓潼县| 交口县| 屏南县| 平凉市| 玉门市| 泽普县| 辽阳县| 沙田区| 太谷县| 沭阳县| 当涂县| 抚顺市| 荆州市| 井研县| 确山县| 桂阳县| 大田县| 大安市| 云阳县| 阳朔县| 思茅市| 莱西市| 卓资县| 铜山县| 温州市| 镇远县| 乐都县| 海丰县| 包头市| 巢湖市| 泸溪县|