簡體   English   中英

正則表達式 - 僅當模式不在引號內時才替換

[英]Regex - Replace only if the pattern is not inside a quote

假設我想寫一個正則表達式來用單詞Cat替換單詞Dog

例如

Dogs are scary.

會變成:

Cats are scary.

但我希望只有在單詞 Dog 不在引號內時才應用此正則表達式。

例如

Dogs are scary but my mom told me that "Dogs are cute"

會變成:

Cats are scary but my mom told me that "Dogs are cute"

我不知道該怎么做。 請幫幫我 :)

如果您正在運行perl或php,則可以使用下面的正則表達式,該正則表達式使用PCRE動詞(*SKIP)(*F)

"[^"]*"(*SKIP)(*F)|Dog

DEMO

然后將匹配的Dog字符串替換為Cat

您可以使用此正則表達式進行搜索:

(?=(([^"]*"){2})*[^"]*$)Dogs

並替換為:

Cats

正則演示

它僅在引號外匹配文本,即匹配關鍵字dogs后的雙引號。

Dogs(?=(?:[^"]*"[^"]*")*[^"]*$)

試試看。用cat代替。請參閱演示。

https://regex101.com/r/dU7oN5/25

對於更完整的功能,如果您需要變量來控制替換,請參閱https://stackoverflow.com/a/69428257/1432181了解類似問題

暫無
暫無

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

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