正则表达式替换字符(@),但仅在短语结尾

时间:2019-05-17 14:55:11

标签: javascript regex sublimetext3

https://regex101.com/

想要使用正则表达式检测所有以@结尾的短语,因此在崇高的文本中例如替换为空白空间

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';

例如($-匹配字符串的末尾)尝试@ $或[@] $,但没有检测到任何[@ $]会检测全部,因为@只会...所以是什么正确的方法?

3 个答案:

答案 0 :(得分:3)

您可以使用以下内容: / [@] [\ W] /

此正则表达式将逐字检查@字符,然后检查单个非单词字符(例如空格)。

只需用一个空格替换找到的内容即可。

您可以在此处查看此正则表达式: https://regex101.com/r/eeuw30/1

答案 1 :(得分:0)

您可以简单地使用第二个@之后的空格作为边界并编写一个表达式,也许类似于:

(.*?)(@)(\s.*)

Demo

RegEx

如果这不是您想要的表达式,则可以在regex101.com中修改/更改表达式。

enter image description here

RegEx电路

您还可以在jex.im中可视化您的表达式:

enter image description here

答案 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+)@globalmultiline/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';