簡體   English   中英

Perl字符串替換:匹配但不替換正則表達式的一部分

[英]Perl string replace: Match, but not replace, part of regex

假設我在Perl中有一個字符串,我想匹配並替換為以下內容:

$string =~ s/[^a-zA-Z]$find[^a-zA-Z]/$replace/g;

因此,如圖所示,我要替換兩邊用非字母字符包圍的所有內容。 但是,當我替換字符串時,我也不想替換這些字符:它們只是正確匹配所必需的。 我怎樣才能告訴Perl正則表達式避免替換$find周圍的東西?

將它們存儲為匹配的組,並在替換字符串中引用它們:

$string =~ s/([^a-z])$find([^A-Z])/\1$replace\2/gi;

使用環顧斷言

s/(?<=[^a-zA-Z])$find(?=[^a-zA-Z])/$replace/g

暫無
暫無

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

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