想要使用正则表达式检测所有以@结尾的短语,因此在崇高的文本中例如替换为空白空间
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';
例如($-匹配字符串的末尾)尝试@ $或[@] $,但没有检测到任何[@ $]会检测全部,因为@只会...所以是什么正确的方法?
答案 0 :(得分:3)
您可以使用以下内容: / [@] [\ W] /
此正则表达式将逐字检查@字符,然后检查单个非单词字符(例如空格)。
只需用一个空格替换找到的内容即可。
您可以在此处查看此正则表达式: https://regex101.com/r/eeuw30/1
答案 1 :(得分:0)
您可以简单地使用第二个@之后的空格作为边界并编写一个表达式,也许类似于:
(.*?)(@)(\s.*)
如果这不是您想要的表达式,则可以在regex101.com中修改/更改表达式。
您还可以在jex.im中可视化您的表达式:
答案 2 :(得分:0)
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, '$1'));
我将(@\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';