Javascript 正则表达式替换第一行的某些字符

Javascript 正则表达式替换第一行的某些字符,javascript,regex,Javascript,Regex,我认为这很简单,但我在网上找不到答案。我已经找到了如何匹配多行字符串中的整个第一行的结果,但没有找到如何仅在第一行找到某个字符的所有匹配项 例如: HelloX dXudXe How areX yXou? FxIXne? 仅在第一行匹配所有大写字母Xs,并将其替换为零将导致: Hello dude How areX yXou? FxIXne? 这只匹配第一个X: /X/m /X/g 这与所有X匹配: /X/m /X/g 我猜答案是其中一个语句的正则表达式版本: "Replace al

我认为这很简单,但我在网上找不到答案。我已经找到了如何匹配多行字符串中的整个第一行的结果,但没有找到如何仅在第一行找到某个字符的所有匹配项

例如:

HelloX dXudXe
How areX yXou?
FxIXne?
仅在第一行匹配所有大写字母Xs,并将其替换为零将导致:

Hello dude
How areX yXou?
FxIXne?
这只匹配第一个X:

/X/m
/X/g
这与所有X匹配:

/X/m
/X/g
我猜答案是其中一个语句的正则表达式版本:

"Replace all X characters until you find a newline"
"Replace all X characters in the first line"

这听起来很简单,是吗?如果是的话,怎么做?我花了数小时寻找解决方案,但我认为可能我根本不了解正则表达式逻辑。

如果不知道您使用的确切语言,很难给出一个示例,但理论很简单:

如果您有一项复杂的任务,请将其分解。

在这种情况下,您只需要对第一行执行某些操作。因此,分两步进行:

  • 识别第一行
  • 对其执行操作
  • 以JavaScript为例,您的代码可能如下所示:

    var input =
        "HelloX dXudXe" + "\n" +
        "How areX yXou?" + "\n" +
        "FxIXne?";
    
    var result = input.replace(/^.*/,function(m) {
        return m.replace(/X/g,'');
    });
    

    看看我如何先抓住第一条线,然后再操作它?这种对问题的分解是一种很好的学习技巧;)

    将字符串拆分为多行,替换第一行,然后重新连接它们

    var lines = input.split('\n');
    lines[0] = lines[0].replace(/X/g, '');
    input = lines.join('\n');
    

    您使用哪种语言?如在编程语言中?JavaScript。但我希望有一个通用的解决方案,可以在任何支持regex的语言上工作,而不使用任何特定于语言的函数。只是一个简单的正则表达式“语句”或模式。正则表达式在不同的语言中实现方式不同。例如,并不是所有的语言都支持环视功能。@不同的语言有不同的regexp变体。例如,在许多语言中,消极落后是解决这个问题的方法,但是Javascript没有。你读过我刚才说的吗?Javascript不支持它。你是如何抓住第一行的<代码>输入包含所有3行,因为连接。@Barmar
    /^.*/
    获取第一行。我只是希望有一个更简单的解决方案。我对regex非常陌生,我刚刚开始理解它,所以我想:“嘿,所有语言都必须实现相同的功能,必须有一个非常简单的解决方案来解决这个问题,它适用于所有语言”。我想不是。我已经想到了类似的东西,但是如果JavaScript中没有一个正则表达式模式,那也没关系。谢谢@相信我,对于正则表达式,最简单的解决方案总是将其分解,而不是试图一次做太多;)“除了第一行以外的所有行”怎么样