簡體   English   中英

為什么下划線像python 3 re庫中的通配符一樣匹配

[英]Why does an underscore get matched like a wildcard in python 3 re library

我試圖弄清楚如何使以下失敗,除非 reg.match 完全包含 Path_WhateverAfterTheUnderscore。 它似乎並沒有嚴格地嘗試將下划線與給定的字符串匹配。 我也試過在 re.compile 字符串模式中轉義下划線,但這也不起作用。 我試圖開始工作的測試代碼是:

import re
reg = re.compile('Path_*')
# This should return None unless it has 'Path_' in it which it doesnt.
# Instead this successfully returns a match of Path
print(reg.match("PathName"))
p = reg.match("PathName")
print(p.group())

當我希望它失敗時,這會通過,因為 PathName 在 Path 之后沒有下划線

正則表達式中的星號 ( * ) 表示“前一個字符的 0 個或多個”。 模式Path_*PathName匹配,因為它在“Path”之后有 0 個下划線。

也許您正在尋找的是表達式:

Path_.*

含義:精確的字符串Path_ ,后跟任意字符 ( . ) 任意次數。

這將匹配: Path_Path_APath_Name ,但不匹配PathPathNamePaths

有關更多信息,請參閱重新文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM