【问题标题】:sed: -e expression #1, char 52: Invalid range end [duplicate]sed:-e 表达式 #1,字符 52:无效范围结束 [重复]
【发布时间】:2020-10-14 15:32:17
【问题描述】:

我有这个在 regex101 上验证的正则表达式: [a-zA-Z0-9-_.]+\@[a-zA-Z0-9-]+\.+[a-zA-Z0-9-]{2,4}

但是当我尝试使用 sed 运行它时,我得到:sed: -e expression #1, char 52: Invalid range end

据我了解,当您定义范围时,这通常是一个问题,例如: 某些版本的 sed 中的 A-z,但在这里我放的是 a-zA-Z?所以我猜这是导致错误的特殊字符,但是我该如何解决呢?

Sed: $( sed -E -n '/[a-zA-Z0-9-_.]+\@[a-zA-Z0-9-]+\.+[a-zA-Z0-9-]{2,4}/p' < emails.txt )

【问题讨论】:

  • 如果我从它可以工作的字符类中删除特殊字符,但是我没有从查询中获得所需的选择。

标签: regex sed character-class


【解决方案1】:

在您的第一个字符类 [a-zA-Z0-9-_.] 中,这是无效范围:9-_

- 移动到角色类别中的最后一个角色:[a-zA-Z0-9_.-]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-30
    • 1970-01-01
    • 2021-02-07
    • 2013-05-14
    • 2014-04-06
    • 2020-11-25
    • 2018-04-25
    • 1970-01-01
    相关资源
    最近更新 更多