簡體   English   中英

Python正則表達式匹配文字星號

[英]Python regex match literal asterisk

給出以下字符串:

s = 'abcdefg*'

我如何匹配它或任何其他僅由小寫字母組成的字符串,並且可選地以星號結尾? 我認為以下內容可行,但它沒有:

re.match(r"^[a-z]\*+$", s)

它給出None而不是匹配對象。

我如何匹配它或任何其他僅由小寫字母組成的字符串,並且可選地以星號結尾?

以下將這樣做:

re.match(r"^[a-z]+[*]?$", s)
  1. ^匹配字符串的開頭。
  2. [az]+匹配一個或多個小寫字母。
  3. [*]? 匹配零或一個星號。
  4. $匹配字符串的結尾。

您的原始正則表達式恰好匹配一個小寫字符,后跟一個或多個星號。

\\*? 表示0或1的星號:

re.match(r"^[a-z]+\*?$", s)
re.match(r"^[a-z]+\*?$", s)

[az]+匹配小寫字母的序列, \\*? 匹配可選的文字* chatacter。

嘗試

re.match(r"^[a-z]*\*?$", s)

這意味着“包含零個或多個小寫字符的字符串(因此是第一個星號),后跟零或一個星號(轉義星號后面的問號)。

你的正則表達式意味着“正好是一個小寫字符后跟一個或多個星號”。

您忘記了[az]匹配后的+,表示您還想要一個或多個(現在它只匹配一個)。

 re.match(r"^[a-z]+\*+$", s)

暫無
暫無

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

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