我有一堆我想在RegEx比賽中使用的縮寫,但它們包含很多正則運算式保留字符(如. ? $)。在 Python 中,您可以使用re.escape. 例如:
re.escape("Are U.S. Pythons worth any $$$?")將回傳'Are\\ U\\.S\\.\\ Pythons\\ worth\\ any\\ \\$\\$\\$\\?'
到目前為止,從我對 Julia 的(一點)經驗來看,我可以說在 Julia 中可能有一種更直接的方法可以做到這一點,因為我找不到任何關于該主題的先前答案。
uj5u.com熱心網友回復:
Julia 在下面使用 PCRE2 庫,并使用其正則運算式參考語法在您將正則運算式與普通字串連接時自動轉義特殊字符。例如。
julia> r"\w \s*" * raw"Are U.S. Pythons worth any $$$?"
r"(?:\w \s*)\QAre U.S. Pythons worth any $$$?\E"
在這里,我們使用了一個raw字串來確保沒有任何字符被解釋為特殊字符,包括$s。
如果我們需要插值,我們也可以使用普通的字串文字來代替。在這種情況下,將完成插值,然后用\Q ... \E.
julia> snake = "Python"
"Python"
julia> r"\w \s*" * "Are U.S. $snake worth any money?"
r"(?:\w \s*)\QAre U.S. Python worth any money?\E"
因此,您可以將希望參考的正則運算式部分放在普通字串中,當您將它們與正則運算式連接時,它們將被自動參考。
您甚至可以自己直接在正則運算式中執行此操作 -\Q啟動一個沒有任何正則運算式特殊字符被解釋為特殊字符的區域,并\E結束該區域。正則運算式引擎按字面意思處理此類區域內的所有內容。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/516493.html
