gpt4 book ai didi

regex - 如何使用正则表达式在 Bash 中提取部分字符串

转载 作者:行者123 更新时间:2023-12-05 01:27:16 34 4
gpt4 key购买 nike

我一直在尝试在 bash 中提取部分字符串。我在 Mac 上使用它。

输入字符串的模式:

  • 一些随机单词后跟一个/。这是可选的。
  • 关键字(deffoobar)后跟连字符 (-) 后跟数字。这可以是 2-6 位数字
  • 这些数字后面又是连字符和几个连字符分隔的单词。

示例输入和输出:

abc/def-1234-random-words // def-1234
bla/foo-12-random-words // foo-12
bar-12345-random-words // bar-12345

所以我尝试按照命令来获取它,但由于某些奇怪的原因,它返回了整个字符串。

extractedValue=`getInputString | sed -e 's/.*\(\(def\|bar\|foo\)-[^-]*\).*/\1/g'`
// and
extractedValue=`getInputString | sed -e 's/.*\(\(def\|bar\|foo\)-\d{2,6}\).*/\1/g'`

我还尝试使用 I 标志使其不区分大小写,但它为我抛出了错误:

: bad flag in substitute command: 'I'


以下是我试过的引用资料:

最佳答案

可以使用-E选项来使用扩展的正则表达式,这样就不用转义(|了。

echo abc/def-1234-random-words  | sed -E -e 's/.*((def|bar|foo)-[^-]*).*/\1/g'
def-1234

关于regex - 如何使用正则表达式在 Bash 中提取部分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69468283/

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