gpt4 book ai didi

regex - 如何在 bash 中使用正则表达式来选择双引号之间的字符串?

转载 作者:太空宇宙 更新时间:2023-11-04 09:34:56 27 4
gpt4 key购买 nike

我真的在这里的其他类似问题中搜索过这种问题,但找不到任何答案。

我在文件中有以下文本:

TYPE_A = "1" AND TYPE_B = "6" AND TYPE_C = "8755asd-"

我正在尝试 grep 以下内容(双引号可以包含数字、字符和特殊字符):

TYPE_C = "8755asd-"

我正在使用的 grep 命令是这样的:grep -o "TYPE_C =\"[0-9a-zA-Z-]*\""text.txt

但是,我认为这个命令中的正则表达式不是通用的。

感谢您的帮助。

最佳答案

只有当双引号包含您提到的所有字符时,您才可以使用下面匹配相应 TYPE 的正则表达式。即至少一个字符,至少一个数字,至少一个特殊字符。

grep -oP 'TYPE_[A-Z]\s*=\s*"(?=[^"]*[A-Za-z])(?=[^"]*\d)(?=[^"]*[^"\w])[\W\w]*?"' file

DEMO

例子:

$ cat ri
TYPE_A = "1" AND TYPE_B = "6" AND TYPE_C = "8755asd-"
TYPE_A = "1" AND TYPE_B = "6" AND TYPE_C = "875d"
TYPE_A = "1" AND TYPE_B = "6" AND TYPE_C = "asd-"
TYPE_A = "1" AND TYPE_B = "6" AND TYPE_C = "875-"
$ grep -oP 'TYPE_[A-Z]\s*=\s*"(?=[^"]*[A-Za-z])(?=[^"]*\d)(?=[^"]*[^"\w])[\W\w]*?"' ri
TYPE_C = "8755asd-"

关于regex - 如何在 bash 中使用正则表达式来选择双引号之间的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27700865/

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