gpt4 book ai didi

regex - 如何搜索特定模式和分隔符的多个单词?

转载 作者:行者123 更新时间:2023-12-05 04:23:16 26 4
gpt4 key购买 nike

我正在尝试从我的字符串中删除多个十六进制单词。我正在搜索恰好 3 个单词,每次恰好用 1 个破折号分隔。

即对于这个输入:

wonder-indexing-service-0.20.0-1605296913-49b045f-19794354.jar

我想得到这个输出:

wonder-indexing-service-0.20.0.jar

我能够通过重复该模式来删除十六进制单词。我怎样才能简化它?另外,我无法将 * 更改为 +,以避免出现空词。知道怎么做吗?

到目前为止我得到了什么:

# Good, but how can I simplify?
% echo 'wonder-indexing-service-0.20.0-1605296913-49b045f-19794354.jar' | sed 's/\-[a-fA-F0-9]*\-[a-fA-F0-9]*\-[a-fA-F0-9]*//g'
druid-indexing-service-0.20.0.jar
# Bad, I'm allowing empty words
% echo 'wonder-indexing-service-0.20.0-1605296913-49b045f-.jar' | sed 's/\-[a-fA-F0-9]*\-[a-fA-F0-9]*\-[a-fA-F0-9]*//g'
druid-indexing-service-0.20.0.jar

谢谢!

编辑:我在原始输出中有错字,谢谢anubhava指出。

最佳答案

你可以使用这个sed:

s='wonder-indexing-service-0.20.0-1605296913-49b045f-19794354.jar'

sed -E 's/(-[a-fA-F0-9]{3,})+//' <<< "$s"

wonder-indexing-service-0.20.0.jar

分手:

  • (: 开始一个群组
    • -:匹配连字符
    • [a-fA-F0-9]{3,}:匹配3个或更多的十六进制字符
  • )+:结束分组。重复此组 1 次以上

关于regex - 如何搜索特定模式和分隔符的多个单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73748626/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com