簡體   English   中英

在 python 中使用帶有正則表達式的多個變量

[英]using multiple variables with regex in python

我正在嘗試使用正則表達式操作搜索帶有變量的字符串。
我瀏覽了它並找到了這個有用的代碼

s = "These are oranges and apples and pears, but not pinapples or .."
r = re.compile(r'\bAND\b | \bOR\b | \bNOT\b', flags=re.I | re.X)
r.findall(s)
['and', 'and', 'not', 'or'] #result

在這段代碼中,他們使用精確的字符串值'AND''OR''NOT'。
如果我有這樣的事情我該怎么辦,

a = 'AND'
b = 'OR'

(我通過運行循環來獲取這些字符串值)
在這段代碼中,他們使用'| (or)'re.findall() ,如果我需要同時搜索a 和 b,我該怎么辦。 並使用re.search()

注意:我認為我需要使用r'\bfoo\b'因為有時我的匹配項會以這種方式... 'foo.', '(foo)''cod.foo'
因此,我不能使用if a in s: (or) if a and b in s:之類的條件。
請提出一些建議來解決這個問題,謝謝。

我可能不知道您要做什么,但如果您打算在正則表達式中使用變量,那么請記住,在發送到re.compile之前,正則表達式只是一個簡單的文本。 所以你可以用它來做所有你可以用文本做的事情,比如:

re.compile(f"\\b({a}|{b})\\b")

或在較舊的 python 中:

re.compile("\\b(" + a + "|" + b + ")\\b")

您不限於使用r"text"來定義正則表達式模式。

如果你想搜索兩個變量,你可以調用 re.search 兩次
像這樣的東西...

if((re.search(rf"\b(?=\w){(a)}\b(?!\w)", s, re.IGNORECASE)) and (re.search(rf"\b(?=\w){(b)}\b(?!\w)", s, re.IGNORECASE))): 


希望能幫助到你

我認為你需要這樣的東西,並添加標志“不區分大小寫”:

pattern = '\b(and|or|not)\b'

暫無
暫無

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

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