2017-07-29 69 views
0

我正在尋找模式,我正在尋找替換(),[]內的字符串。這必須在字符串的開始和結束時完成。正則表達式模式來替換字符串的開始和結束字符串

我使用這種模式。

\([^)]*\) 

而這種無處不在替換字符串

EG。

Original         Expected 
Start 1306 Sewing Machine (White) -- Singer Start 1306 Sewing Machine 
(White) Start 1306 Sewing Machine -- Singer Start 1306 Sewing Machine 
Start 1306 Sewing Machine [White] -- Singer Start 1306 Sewing Machine 
[White] Start 1306 Sewing Machine -- Singer Start 1306 Sewing Machine 
+0

你提到的字符串的 「結束」,但您的示例文本技術上並沒有任何()或[]在每行的末尾或整個字符串的結尾。你在考慮「 - 」之前的「結局」嗎?示例文本對我來說似乎不完整。也許更新示例文本以包含您想要匹配的內容和不想匹配的內容的所有可能示例。 –

回答

0

這工作

查找(?m)^(?:(?:\([^()]*\)|\[[^\[\]]*\])\s*(.*?)\s*(?:\([^()]*\)|\[[^\[\]]*\])?\s*|\s*(.*?)\s*(?:\([^()]*\)|\[[^\[\]]*\])\s*)$

更換Singer $1$2

https://regex101.com/r/wG0rvD/1

擴展

(?m) 
^ 
(?: 
     (?: 
      \([^()]* \) 
     | 
      \[ [^\[\]]* \] 
    ) 
     \s*  
     (.*?)      # (1) 
     \s* 
     (?: 
      \([^()]* \) 
     | 
      \[ [^\[\]]* \] 
    )? 
     \s* 
    | 
     \s*  
     (.*?)      # (2) 
     \s* 
     (?: 
      \([^()]* \) 
     | 
      \[ [^\[\]]* \] 
    ) 
     \s* 
) 
$  
1

我猜, 「 - 」 表示 「原 - 編輯」 ...

你必須使用^(行的開始)和$(線結束)是這樣的:

(^\([^)]*\)|\[[^]]*\])|(\([^)]*\)|\[[^]]*\]$)

爲清楚:

(...)|(...)交替 - 比賽第一個()或第二()行 ^開始,弗洛通過

\([^)]*\)|\[[^]]*\](任何不是 「)」)或[任何不是 「]」]

| OR

\([^)]*\)|\[[^]]*\](任何不是 「)」)或[任何結婚那是不是「]」],然後線的

$結束

注意^在這裏有多種含義 - 線的起點和反轉字符類。

+0

謝謝,看起來像我失去了一些東西。沒有找到匹配項https://regex101.com/r/kQ2jS3/11 – Techonthenet

+0

抱歉,在寫作時將外部交替的大括號放在錯誤的地方。他們也必須圍繞^/$。 – flederwiesel