![](/img/trans.png)
[英](Regular Expressions) How to add Lookaround (Lookbehind) in to this expression
[英]How to build a regular expression with lookbehind correctly?
我試圖通過搜索和替換行在 WebStorm 中制作一個替換 styles 的正則表達式,但是 5 個小時的努力沒有給出任何結果。
(?<!vw\()(-?[0-9]*\.?[0-9]+px)
padding: 25px 30px;
box-shadow: 0 vw(20px) vw(30px) rgba(10, 9, 3, 0.2);
border-radius: vw(20px);
margin-top: 10px;
期望所有以像素為單位的長度(例如20px
)除了那些包裹在vw(
… )
中的行(例如vw(20px)
)將被選中。 也就是說,不應選擇圖像中強調的那些線
僅僅排除匹配前面有“vw(”是不夠的,因為這可能只是意味着匹配可以在跳過一個數字之后開始一個 position,然后當然匹配前面有一個數字,而不是括號.
要解決此問題,還要求數字前面的字符不是數字、點或減號,因為那實際上應該是匹配數字的一部分。 您可以使用第二個后視模式來執行此操作: (?<.[-.\d])
與您的問題無關,但如果您在兩個匹配相同事物(數字)的模式之間有一個可選部分(點),則會導致性能不佳。 要匹配十進制數,請將整個小數部分設為可選,而不僅僅是小數點:
(?<!vw\()(?<![-.\d])(-?\d*(?:\.\d+)?px)
在regex101上查看
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.