Regex 高级正则表达式-设置全局修饰符时仅匹配文件的第一次出现

Regex 高级正则表达式-设置全局修饰符时仅匹配文件的第一次出现,regex,regex-lookarounds,Regex,Regex Lookarounds,在我的编辑器中,我尝试在许多文件上放置一个正则表达式,这样,如果它找到jquery美元函数$,它就会使juqery函数加载const$=require('jquery') 基本上,如果我有这样的文件: $(document).ready(function () { $('.btn-toggle-achievement').on('click', function (e) { var button = e.target; var el = $(button)

在我的编辑器中,我尝试在许多文件上放置一个正则表达式,这样,如果它找到jquery美元函数
$
,它就会使juqery函数加载
const$=require('jquery')

基本上,如果我有这样的文件:

$(document).ready(function () {
    $('.btn-toggle-achievement').on('click', function (e) {
        var button = e.target;
        var el = $(button);
        $.post('/achievements_ajax/toggle_achievement', {
            status: el.data('enable'),
            achievement_id: el.data('achievement-id')
        });
    });
});
我想编写一个正则表达式,用
const$=require('jquery')替换第一次出现的
$
\n
。我在编辑器中使用replace实用程序。最终的结果应该是这样的

const $ = require('jquery');
$(document).ready(function () {
    $('.btn-toggle-achievement').on('click', function (e) {
        var button = e.target;
        var el = $(button);
        $.post('/achievements_ajax/toggle_achievement', {
            status: el.data('enable'),
            achievement_id: el.data('achievement-id')
        });
    });
});
到目前为止,我得到的是:


但在这一刻,它取代了任何出现的
$
。我只想替换第一个。我可以确保正则表达式只匹配第一次出现的正则表达式吗?也许我需要一个负回溯来检查
$
之前是否已匹配?

在正则表达式中,设置了全局标志,这意味着它将替换每次出现的情况。关闭全局标志,您将得到您想要的

编辑:如果无法关闭全局标志,请匹配从第一个$on开始的所有内容:

(\$(?:.|[\r\n\u2028\u2029])*)

在正则表达式中,设置了全局标志,这意味着它将替换所有事件。关闭全局标志,您将得到您想要的

编辑:如果无法关闭全局标志,请匹配从第一个$on开始的所有内容:

(\$(?:.|[\r\n\u2028\u2029])*)
试试这个正则表达式:

^([^$]*)(?=\$)

说明:

  • ^
    -断言字符串的开头
  • [^$]*
    -匹配任何非
    $
    字符的0+次出现次数。括号是组中的这一部分。稍后,此组中捕获的任何内容都将被此组的内容以及行
    const$=require('jquery')替换\n
    如演示中所示
  • (?=\$)
    -正向前瞻以验证迄今为止匹配的内容,后面跟着一个
    $
试试这个正则表达式:

^([^$]*)(?=\$)

说明:

  • ^
    -断言字符串的开头
  • [^$]*
    -匹配任何非
    $
    字符的0+次出现次数。括号是组中的这一部分。稍后,此组中捕获的任何内容都将被此组的内容以及行
    const$=require('jquery')替换\n
    如演示中所示
  • (?=\$)
    -正向前瞻以验证迄今为止匹配的内容,后面跟着一个
    $

写得好的问题。感谢您提供到目前为止所获得内容的链接。
(const\s*\$\s*=\s*require\('jquery'\);\n |)(.*\$\(\$)
const$=require('jquery'));\n$2
。请参阅:。它将用您想要的字符串替换每一次出现和每一次未出现。如果我将全局标志放在@ctwheels上,这是我的编辑器中的唯一选项,它将不起作用。问题写得很好。感谢您提供到目前为止所获得内容的链接。
(const\s*\$\s*=\s*require\('jquery'\);\n\124;(.\$)(.\$)(.\\$)。)
const$=require('jquery'));\n$2
。请参见:。它将用您想要的字符串替换每一次出现和每一次未出现。如果我在@ctwheels上放置全局标志,则该字符串无效,这是我的编辑器中的唯一选项。但我不能在我的编辑器的正则表达式实用程序中执行此操作。但我不能在我的编辑器的正则表达式实用程序中执行此操作。谢谢,解释得很好!谢谢,非常好躺!