[英]regex to match more than one occurrence of ; between any two random words Google sheets
我正在嘗試創建一個正則表達式來匹配多次出現的;
兩個單詞之間(超過一個字母)。
前任
MM ZZ; ; ; ; NN GGG; ; SSS. ;
我需要更換; ; ; ;
; ; ; ;
和; ;
; ;
與;
所以我會
MM ZZ;NN GGG;SS. ;
如果我的字符串看起來像ZZ; ; ; ; NN. ;
ZZ; ; ; ; NN. ;
我設法得到(?<=[a-zA-z])\b(.*)(?=[a-zA-z])\b
這有效
但是如果我的字符串比較復雜,比如MM ZZ; ; ; ; NN GGG; ; SSS. ;
MM ZZ; ; ; ; NN GGG; ; SSS. ;
那么它不起作用
這該怎么做?
您可能會使用:
(?<=[a-zA-Z])\s*;\s;[\s;]*(?=[a-zA-Z])
解釋
(?<=[a-zA-Z])
正面回顧,斷言左邊的字符 a-zA-Z\s*;\s;
匹配至少 2 次;
在可選的空白字符之間[\s;]*
匹配可選的空白字符或;
字符(?=[a-zA-Z])
正面前瞻,斷言右邊的字符 a-zA-Z 並替換為單個;
const regex = /(?<=[a-zA-Z])\s*;\s;[\s;]*(?=[a-zA-Z])/g; const s = `MM ZZ; ; ; ; NN GGG; ; SSS. ; ZZ; ; ; ; NN. ; MM ZZ; ; ; ; NN GGG; ; SSS. ;`; console.log(s.replace(regex, ';'))
如果單個分號應至少由一個空白字符分隔:
(?<=[a-zA-Z])\s+(?:;\s+)+(?=[a-zA-Z])
在此模式中,這部分\s+(?:;\s+)+
匹配 1+ 個空白字符,並重復 1+ 次;
和 1+ 個空白字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.