[英]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_A
、 Path_Name
,但不匹配Path
、 PathName
、 Paths
。
有關更多信息,請參閱重新文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.