【问题标题】:Regex replace character (@) but only at end of phrase正则表达式替换字符 (@) 但仅在短语末尾
【发布时间】:2019-05-17 14:55:11
【问题描述】:

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

so as ($ - Matches the end of a string) 正在尝试 @$ 或 [@]$ 但没有检测到任何用 [@$] 检测到所有,因为它会是 @ 只有这样......什么是正确的方法?

【问题讨论】:

  • /(@\w+)@/g => $1/(\w+)@/g => $1

标签: javascript regex sublimetext3


【解决方案1】:

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

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

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

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

【讨论】:

  • 为了缩短它,你不需要[]@\W 也一样
【解决方案2】:

你可以简单地用第二个@之后的空格作为边界,写一个表达式,可能类似于:

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

Demo

正则表达式

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

正则表达式电路

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-23
      • 2013-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      • 2012-02-03
      相关资源
      最近更新 更多