gpt4 book ai didi

regex - 使用正则表达式提取子字符串同时排除某个短语

转载 作者:行者123 更新时间:2023-12-02 05:50:58 24 4
gpt4 key购买 nike

对于字符串说:

test.1234.mp4 

我想提取数字1234没有提取mp4中的4

这个正则表达式是什么?

数字并不总是位于第二个位置,可以位于不同的位置并且可能不总是四位数。我想提取数字而不提取 mp4 中的 4。

更多例子:

test.abc.1234.mp4
test.456.abc.mp4
test.aaa.bbb.c.111.mp4
test.e666.123.mp4

基本上只会提取数字。因此,对于最后一个示例,e666 中的 666 不会被提取,而只有 123。提取我一直在使用

echo "example.123.mp4" | grep -o "REGEX"

编辑:test456 本来就是 ​​test.456

最佳答案

接受的答案将在“test.e666.123.mp4”(打印 666)上失败。

这应该可行

$ cat | perl -ne '/\.(\d+)\./; print "$1\n"'
test.abc.1234.mp4
test.456.abc.mp4
test.aaa.bbb.c.111.mp4
test.e666.123.mp4
1234
456
111
123

请注意,这只会打印第一组数字,如果我们有 test.123.456.mp4,则只会打印 123。

我们的想法是匹配一个点后跟我们感兴趣的数字(括号保存匹配),然后是另一个点。这意味着它将在 123.mp4 上失败。

要解决此问题,您可以:

$ cat | perl -ne '/(^|\.)(\d+)\./; print "$2\n"'
test.abc.1234.mp4
test.456.abc.mp4
test.aaa.bbb.c.111.mp4
test.e666.123.mp4
781.test.mp4
1234
456
111
123
781

第一个匹配项是行首 (^) 或一个点,后跟数字和一个点。我们在这里使用 $2,因为 $1 要么是一行的开头,要么是一个点。

关于regex - 使用正则表达式提取子字符串同时排除某个短语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16478118/

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