gpt4 book ai didi

正则表达式查找每个出现的字符串,并且它后面必须始终跟有相同的字符串

转载 作者:行者123 更新时间:2023-12-01 23:30:02 25 4
gpt4 key购买 nike

我有一个字符串,它包含几个“value=[something]”部分。我需要编写一个正则表达式 (PCRE),只有当“值”始终具有相同的值时它才会成功。例如在字符串中“value=”出现 n 次,如果值始终是“cat”,则成功,但如果找到不是“cat”的其他内容,则失败。

到目前为止,我尝试编写正则表达式失败了。我的方法是捕获“value=”的第一个值,然后以某种方式匹配所有其他“value=”,但我似乎找不到工作方法。我当然不知道这个值是多少,这就是我必须捕获它的原因。

必须成功:

aaaaaaa bbbbb value=cat cccccc ddddd value=cat fffffff value=cat ggggg hh jjj value=cat kkkkk

必须失败:

aaaaaaa bbbbb value=cat cccccc ddddd value=cat fffffff value=bat ggggg hh jjj value=cat kkkkk

抱歉解释过于复杂。

编辑:也许我应该已经提到了这一点,但我能使用的东西有限。在这个自定义环境中,我不能使用除 PCRE 之外的任何其他东西,即使它有一些自定义限制,例如我不能使用条件组。

最佳答案

不是纯粹的正则表达式解决方案,但可能用作解决方法

$ grep -oE 'value=\w+' pass | uniq | awk 'END{exit NR>1?1:0}'; echo $?
0

$ grep -oE 'value=\w+' fail | uniq | awk 'END{exit NR>1?1:0}'; echo $?
1

将您的示例输入用于通过和失败文件。

$ head pass fail
==> pass <==
aaaaaaa bbbbb value=cat cccccc ddddd value=cat fffffff value=cat ggggg hh jjj value=cat kkkkk

==> fail <==
aaaaaa bbbbb value=cat cccccc ddddd value=cat fffffff value=bat ggggg hh jjj value=cat kkkkk

也许没有 uniq 会更好

$ grep ... | awk 'a[$0]++>1{exit 1}' 

关于正则表达式查找每个出现的字符串,并且它后面必须始终跟有相同的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39899767/

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