Match asdffile12 --> match -6ren">
gpt4 book ai didi

正则表达式仅匹配模式的一次出现

转载 作者:太空宇宙 更新时间:2023-11-04 06:06:50 25 4
gpt4 key购买 nike

如何编写一个正则表达式来表示给定的模式仅出现一次?

例如,如果我正在搜索模式"file",

      123file345 --> Match
asdffile12 --> match
file12file --> does not match

最佳答案

您可以使用否定 lookahead :

^(?!(?:.*?file){2}).*?file.*$

Test at regex101

您可以在 grep 中应用上述正则表达式。

grep -P '^(?!(?:.*?file){2}).*?file' file
<小时/>

^ start (?!(?:.*?file){2}) 处的否定先行断言会向前查看,如果不存在的话
2x ( .*? lazily 任意数量的任意字符,后跟子字符串 file )。
如果此条件成功,则它会匹配 .*?file.* 所有字符串(如果满足)包含子字符串file

对于仅匹配行,不需要最后一个贪心点(用于匹配 file 之后的任何字符)。

enter image description here

关于正则表达式仅匹配模式的一次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31308242/

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