正则表达式替换字符 (@) 但仅在短语末尾
Regex replace character (@) but only at end of phrase
想要使用正则表达式检测所有以 @ 结尾的短语,因此在 sublime 文本中用空 space 替换例如
DECLARE @showBrand@ VARCHAR(MAX) = '1';
DECLARE @showBrandImage@ VARCHAR(MAX) = '[]';
DECLARE @ShowBrandLink@ VARCHAR(MAX) = '[]';
DECLARE @ShowbreakLineAfterSize@ VARCHAR(MAX) = '[]';
DECLARE @showbreaklineAfterStock@ VARCHAR(MAX) = '[]';
DECLARE @showBuyBtn@ VARCHAR(MAX) = '1';
并得到
DECLARE @showBrand VARCHAR(MAX) = '1';
DECLARE @showBrandImage VARCHAR(MAX) = '[]';
DECLARE @ShowBrandLink VARCHAR(MAX) = '[]';
DECLARE @ShowbreakLineAfterSize VARCHAR(MAX) = '[]';
DECLARE @showbreaklineAfterStock VARCHAR(MAX) = '[]';
DECLARE @showBuyBtn VARCHAR(MAX) = '1';
so as ($ - Matches the end of a string) was trying @$ or [@]$ 但没有检测到任何 [@$] 检测到所有因为它会是 @ only 所以...什么是正确的方法吗?
您可以使用以下内容:/[@][\W]/
此正则表达式将逐字检查 @ 字符,然后检查单个 non-word 字符(例如 space)。
只需将找到的内容替换为单个 space。
您可以在此处查看此正则表达式:https://regex101.com/r/eeuw30/1
你可以简单的用第二个@后面的space作为分界,写一个表达式,可能类似于:
(.*?)(@)(\s.*)
Demo
正则表达式
如果这不是您想要的表达方式,您可以 modify/change 您的表达方式 regex101.com。
正则表达式电路
您还可以在 jex.im:
中可视化您的表情
Javascript 实施:
const needle = `
DECLARE @showBrand@ VARCHAR(MAX) = '1';
DECLARE @showBrandImage@ VARCHAR(MAX) = '[]';
DECLARE @ShowBrandLink@ VARCHAR(MAX) = '[]';
DECLARE @ShowbreakLineAfterSize@ VARCHAR(MAX) = '[]';
DECLARE @showbreaklineAfterStock@ VARCHAR(MAX) = '[]';
DECLARE @showBuyBtn@ VARCHAR(MAX) = '1';
`;
console.log(needle.replace(/(@\w+)@/gm, ''));
我会选择 (@\w+)@
和 global
和 multiline
(/gm
) 并使用第 1 组匹配替换。
https://regex101.com/r/Sv1zT7/1/
结果会是
DECLARE @showBrand VARCHAR(MAX) = '1';
DECLARE @showBrandImage VARCHAR(MAX) = '[]';
DECLARE @ShowBrandLink VARCHAR(MAX) = '[]';
DECLARE @ShowbreakLineAfterSize VARCHAR(MAX) = '[]';
DECLARE @showbreaklineAfterStock VARCHAR(MAX) = '[]';
DECLARE @showBuyBtn VARCHAR(MAX) = '1';
想要使用正则表达式检测所有以 @ 结尾的短语,因此在 sublime 文本中用空 space 替换例如
DECLARE @showBrand@ VARCHAR(MAX) = '1';
DECLARE @showBrandImage@ VARCHAR(MAX) = '[]';
DECLARE @ShowBrandLink@ VARCHAR(MAX) = '[]';
DECLARE @ShowbreakLineAfterSize@ VARCHAR(MAX) = '[]';
DECLARE @showbreaklineAfterStock@ VARCHAR(MAX) = '[]';
DECLARE @showBuyBtn@ VARCHAR(MAX) = '1';
并得到
DECLARE @showBrand VARCHAR(MAX) = '1';
DECLARE @showBrandImage VARCHAR(MAX) = '[]';
DECLARE @ShowBrandLink VARCHAR(MAX) = '[]';
DECLARE @ShowbreakLineAfterSize VARCHAR(MAX) = '[]';
DECLARE @showbreaklineAfterStock VARCHAR(MAX) = '[]';
DECLARE @showBuyBtn VARCHAR(MAX) = '1';
so as ($ - Matches the end of a string) was trying @$ or [@]$ 但没有检测到任何 [@$] 检测到所有因为它会是 @ only 所以...什么是正确的方法吗?
您可以使用以下内容:/[@][\W]/
此正则表达式将逐字检查 @ 字符,然后检查单个 non-word 字符(例如 space)。
只需将找到的内容替换为单个 space。
您可以在此处查看此正则表达式:https://regex101.com/r/eeuw30/1
你可以简单的用第二个@后面的space作为分界,写一个表达式,可能类似于:
(.*?)(@)(\s.*)
Demo
正则表达式
如果这不是您想要的表达方式,您可以 modify/change 您的表达方式 regex101.com。
正则表达式电路
您还可以在 jex.im:
中可视化您的表情Javascript 实施:
const needle = `
DECLARE @showBrand@ VARCHAR(MAX) = '1';
DECLARE @showBrandImage@ VARCHAR(MAX) = '[]';
DECLARE @ShowBrandLink@ VARCHAR(MAX) = '[]';
DECLARE @ShowbreakLineAfterSize@ VARCHAR(MAX) = '[]';
DECLARE @showbreaklineAfterStock@ VARCHAR(MAX) = '[]';
DECLARE @showBuyBtn@ VARCHAR(MAX) = '1';
`;
console.log(needle.replace(/(@\w+)@/gm, ''));
我会选择 (@\w+)@
和 global
和 multiline
(/gm
) 并使用第 1 组匹配替换。
https://regex101.com/r/Sv1zT7/1/
结果会是
DECLARE @showBrand VARCHAR(MAX) = '1';
DECLARE @showBrandImage VARCHAR(MAX) = '[]';
DECLARE @ShowBrandLink VARCHAR(MAX) = '[]';
DECLARE @ShowbreakLineAfterSize VARCHAR(MAX) = '[]';
DECLARE @showbreaklineAfterStock VARCHAR(MAX) = '[]';
DECLARE @showBuyBtn VARCHAR(MAX) = '1';