用于删除不需要的字符模式的正则表达式

RegEx to remove unwanted character patterns

我需要从字符串中删除一些字符。但是,有一定的限制。

示例短语

有两个“@planes”在@它们的构建方式上几乎相同。

我需要找到模式 '@ 和下一个模式 '。这些字符需要从字符串中删除。但是,如果只有 ' 或只有 @,它们应该保持不变。为澄清起见,该字符串可以包含一个或多个单词,这些单词在开头用“@”括起来,在结尾用一个“”括起来。需要删除封闭字符。

删除字符后应该如下所示:

有两架飞机在@它们的建造方式上几乎相同。

另一个示例短语:

“@computer”有时可能非常“@expensive in price”,但在其他情况下它可能是“@cheap or even free”。

删除字符后,它应该是这样的:

一台电脑的价格有时可能非常昂贵,但在其他情况下它可能是@便宜甚至免费的。

正则表达式应该适用于 JavaScript。

/'@([a-z0-9\s]+)'/gi 适合你吗?

"A '@computer' can sometimes be very '@expensive in price' but in other cases it can be @cheap or even free'.".replace(/'@([a-z0-9\s]+)'/gi, '');

您可以查看 https://regex101.com/ 以获得有关正则表达式本身的详细解释。

这个应该可以满足您的需求:/'@([^']*)'/g

  1. 寻找'@(对应部分:'@
  2. 它获取每个字符,即不是 ' 并将它们分组(对应部分:([^']*)
  3. 它将 ' 附加到找到的替换匹配项中

str.replace(regex, ''); 中的 $1 引用在步骤 2

中创建的组

示例:

const regex  = new RegExp("'@([^']*)'","g");

const testStr = "A '@computer' can sometimes be very '@expensive in price' but in other cases it can be @cheap or even free'.";

const result = testStr.replace(regex, '');

console.log(result);