[英]How do I add conditions to search for specific substrings before or after intended string of search in regex?
問題:我必須在文件中找到有效的十六進制顏色,但不包括任何可能與之沖突的選擇器。
例如,在下面的代碼中,
#Cab
{
background-color: #ABC;
border: 2px dashed #fff;
}
#ABC
和#fff
有效,但#cab
。
問題:是否可以在預期的搜索字符串前后放置 substring 的條件。 在這里,我需要搜索這個#[0-9a-fA-F]{3,3}|#[0-9a-fA-F]{6,6}
。 但前提是緊接在它之前的 substring 是:[\w\s]*
並且緊接在它之后的 substring 是\W
注 1:我認為在字符串之后搜索\W
可以通過在原始搜索中添加\b
來完成。
注意 2:這是 python 中的一個問題,我可以通過 python 對其進行修整,但想知道是否有辦法通過正則表達式來做到這一點。
嘗試
#! /usr/bin/env python3
import re
string = """
#Cab
{
background-color: #ABC;
border: 2px dashed #fff;
border: 2px dashed #ffe;
border: 2px #123;
color:#ff00ff;
color: #FfFdF8; background-color:#aef;
}
"""
pattern = re.compile(r':\s*[\w\s]*(#[0-9A-F]{3}|#[0-9A-F]{6});', flags=re.IGNORECASE)
match = re.findall(pattern, string) # where 'string' is your input
print(match)
產生
['#ABC', '#fff', '#ffe', '#123', '#ff00ff', '#FfFdF8', '#aef']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.