簡體   English   中英

替代正則表達式

[英]Substitution regex

我想用$替換類[A-Za-z0-9_]之前的所有空白。

$string = "STRING sDir = sDrive";
$string =~ s/\s(?=[A-Za-z0-9_])/ \$/;

它只匹配一次並產生:

STRING $sDir = sDrive;

要多次匹配,請使用/ g標志:

$string = "STRING sDir = sDrive";
$string =~ s/\s(?=[A-Za-z0-9_])/ \$/g;

您可以將g標志用於正則表達式:

$string = "STRING sDir = sDrive";
$string =~ s/\s(?=[A-Za-z0-9_])/ \$/g;

這樣s///就可以在您的模式的每次匹配中使用。

Perl的默認行為是執行一次替換。

g標志告訴它為每次出現執行替換。

如果我認為您的意思是:

s/\s+\b/ \$/g;

這會刪除(所以' a' -> ' $a' )之前的所有空格,並且\\ b是(?=(?<=\\W)\\w)(?=(<=\\w)\\W_的斷言; \\ s始終為\\W ,並且[a-zA-Z0-9_]\\w的通用定義匹配,因此它與您的(?=[...])匹配。

(當然,如果要處理\\w[a-zA-Z0-9]字符集,則必須用\\b代替斷言。)

暫無
暫無

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

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