簡體   English   中英

如何在正則表達式中的預期搜索字符串之前或之后添加條件以搜索特定子字符串?

[英]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.

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