【问题标题】:Regex positive look behind notepad++正则表达式积极看待记事本++
【发布时间】:2021-03-30 17:05:48
【问题描述】:

我正在尝试使用正则表达式来获取大小不同的字符串的最后 3 位数字。字符串的开头总是以 name- 开头 例子:

“名称-0000425” “名称-00123” “名字-123”

我希望正则表达式获取该号码的最后 3 位数字并将其替换为这些数字。这是我尝试过的正则表达式,但它只抓取前 3 位数字。

(?-s)(?<=Name-)(\d{3})

任何帮助将不胜感激!谢谢!

【问题讨论】:

  • 当你想要name- 时,为什么要使用hot-?这没有意义。

标签: regex notepad++ regex-lookarounds


【解决方案1】:

你可以使用

(?<=Name-)\d*(\d{3})

替换为$1。请参阅regex demo

或者,您也可以使用(Name-)\d*(\d{3}) 并替换为$1$2

详情

  • (?&lt;=Name-) - 一个正向的后视,匹配紧接在 Name- 之前的位置
  • \d* - 任何零个或多个数字
  • (\d{3}) - 第 1 组($1 指的是替换模式中的此值):三位。

注意事项

  • 如果您只想删除初始零,可以使用(?&lt;=Name-)0+(\d{3}) 正则表达式。
  • 如果行的最后三位数字之前可以有其他内容,您可以使用(?&lt;=Name-).*(\d{3})
  • 如果在单行双引号内的最后三位数字之前可以有其他内容,您可以使用(?&lt;=Name-)[^"\n\r]*(\d{3})

【讨论】:

  • 太棒了,我错过了 \d* 非常感谢!!
【解决方案2】:

最短的正则表达式将是...

查找内容:\d{3}"
将其替换为789"

【讨论】:

    猜你喜欢
    • 2016-02-20
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    相关资源
    最近更新 更多