簡體   English   中英

正則表達式匹配不止一次出現; 在任意兩個隨機詞之間

[英]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

並替換為單個;

Regex101 演示

 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+ 個空白字符。

Regex101 演示

暫無
暫無

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

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