regex - 如何制定特定的正则表达式

标签 regex bash grep

我正在尝试找到一个正则表达式来抓取聊天室中发布的 gif 图像。 GIF 使用冒号后跟文本和/或数字来描述图像来发布。聊天室是这样设置的

user1:hello i'm user1 :hi
user2::heythere1 hi user1

此示例中的 gif 为 :hi:heythere1

到目前为止,我的正则表达式是 grep -oE ':[a-zA-Z0-9]+' 但这也会返回 :hello 因为每个用户名都是后面还跟一个冒号。此示例中的 :hello 不是 gif。这只是有人打招呼而已。

有没有办法改变这个正则表达式,使其只返回 :hi:heythere1

最佳答案

假设文本文件中的所有行都以用户名和冒号开头,您可以这样做(我使用了与您相同的正则表达式):

cut -f2- -d: file | grep -oE ':[a-zA-Z0-9]+'

输入:

user1:hello i'm user1 :hi :h2
user2::heythere1 hi user1

输出:

:hi
:h2
:heythere1

关于regex - 如何制定特定的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42357938/

相关文章:

linux - SH Linux : Syntax error: word unexpected

bash - 使用 bash 读取文本文件中行的子集

python - 子进程 - Grep Broken Pipe

linux - 查找具有大小和时间并按时间戳排序的命令

regex - grep:如何使用非捕获组?

javascript查找并替换字符串中的动态模式

javascript - jquery使用正则表达式获取括号中的值

java - weka,命令行,设置路径,java

regex - 如何使用正则表达式删除这部分文本?

Java正则表达式解析具有特殊字符和数字的字符串