我正試圖將一些檔案名大寫,同時對其應用一些例外情況。我有一系列的替換,其中之一是
s/(vs|etc)[.]? /L$1./gir
通過這個,我想匹配任何出現的 "vs "或 "Vs "或 "VS. "或 "etc. "或 "Etc "等等。如果源字串已經有一個句號(例如:"Vs."),那么我不想添加一個,否則我想添加一個。字串的結果部分也需要被小寫,所以唯一有效的輸出是vs.或etc..
這可能只是一個微不足道的變化,但我就是找不到它。誰能讓我了解一下組裝這個詞條的思維程序,好嗎?
uj5u.com熱心網友回復:
請記住,詞的邊界含義是取決于背景關系的。
在這里,您需要在可選的.之前移動單詞邊界,因為.(即當.之后有一個.,例如,等)將只在.之后有一個字母、數字或_的情況下匹配。
因此,你可以使用
s/(vs|etc).?/$1./gir
請看Perl在線演示:
#!/usr/bin/perl
使用功能 'say'。
use strict;
使用警告。
my $str = "vs or Vs. or VS. or etc avs and metch";
say $str =~ s/(vs|etc). ? /L$1./gir;
# => vs. or vs. or vs. or etc. avs and metch
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/323768.html
標籤:
上一篇:Regex-將數字替換為字符
