我正在寻找模式,我希望在(),[]中替换字符串。这必须在字符串的开头和结尾处完成。
我使用这种模式。
\([^)]*\)
这会在任何地方替换字符串
例如
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 :(得分:1)
我想,“ - ”的意思是“原创 - 编辑”......
你必须使用^(行首)和$(行结束):
(^\([^)]*\)|\[[^]]*\])|(\([^)]*\)|\[[^]]*\]$)
为清楚起见:
( ... )|( ... )
轮换 - 匹配1st()或2nd()
^
行首,然后是
\([^)]*\)|\[[^]]*\]
(任何不是“)”)或[任何不是“]的东西”]
|
或
\([^)]*\)|\[[^]]*\]
(任何不是“)”)或[任何不是“]”的事后跟
$
行尾
请注意,^
在这里有多个含义 - 字符类的开头和反转。
答案 1 :(得分:0)
这有效
查找(?m)^(?:(?:\([^()]*\)|\[[^\[\]]*\])\s*(.*?)\s*(?:\([^()]*\)|\[[^\[\]]*\])?\s*|\s*(.*?)\s*(?:\([^()]*\)|\[[^\[\]]*\])\s*)$
替换Singer $1$2
https://codepen.io/jordanwillis/pen/bqaGRR
扩展
(?m)
^
(?:
(?:
\( [^()]* \)
|
\[ [^\[\]]* \]
)
\s*
( .*? ) # (1)
\s*
(?:
\( [^()]* \)
|
\[ [^\[\]]* \]
)?
\s*
|
\s*
( .*? ) # (2)
\s*
(?:
\( [^()]* \)
|
\[ [^\[\]]* \]
)
\s*
)
$