【问题标题】:Regex backreference not returning anything?正则表达式反向引用不返回任何内容?
【发布时间】:2014-10-21 11:41:04
【问题描述】:

我是正则表达式的新手,所以请多多包涵。

我正在尝试用 Sublime Text 3 中的 col-md-(\w+) col-lg-(\w+) 替换 col-md-(\w+) 的所有内容。

但是,当我使用col-md-\1 col-lg-\1 时,它只是变成了col-md- col-xs-

我做错了什么?

谢谢!

更新:根据请求,我正在显示输入/输出:

...当我全部替换时

【问题讨论】:

  • 什么语言?显示一些上下文。
  • @M42 对不起,我忘了在问题中提及它。我正在我的编辑器 Sublime Text 3 中使用查找/替换功能。我将更新问题。
  • 你试过用$1代替\1吗?
  • 你能不能过去输入一下
  • @vks 我添加了图片以帮助澄清。

标签: regex sublimetext sublimetext3


【解决方案1】:

删除你的前瞻,它会工作:

Find What:    col-md-(\w+)
Replace With: col-xs-$1 col-sm-$1 col-md-$1 col-lg-$1

或者使用$2 而不是$1,因为你在这个前瞻中有一个捕获组:

Find What:    (?!col-md-(\w+) )col-md-(\w+)
Replace With: col-xs-$2 col-sm-$2 col-md-$2 col-lg-$2

【讨论】:

  • 不是没用,就是防止col-md-后面的数字(col-md-#)被替换。
  • 然后使用$2 而不是$1,你有一个捕捉组你的前瞻。
  • @AvinashRaj 技术上没有 zessx 将其发布在 cmets 中:P
  • @AvinashRaj 没关系,你们都是对的。
  • @Dubstaphone 你可以试试我的查找字符串并使用$1 并告诉我它是否有效
【解决方案2】:

天哪,你需要使用$2 而不是$1。由于您的否定前瞻已经包含一个捕获组,因此仅当您在替换部分中使用 $1 时,正则表达式引擎才会引用该组。在替换部分使用$2 而不是$1,这样它就会引用不在负前瞻内的组。

col-xs-$2 col-sm-$2 col-md-$2 col-lg-$2

【讨论】:

    【解决方案3】:
    col-md-(\w+)(?!\s*col-lg)
    

    试试这个。这应该可以解决你的问题。

    【讨论】:

    • 不。同样的问题。查找工作正常,但替换失败。
    • @Dubstaphone 如果你在 find 中使用它,那么它是否适用于 $1
    猜你喜欢
    • 2019-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多