gpt4 book ai didi

regex - 匹配特定长度的单词,锚定,不做魔法数学

转载 作者:行者123 更新时间:2023-12-01 07:26:34 26 4
gpt4 key购买 nike

假设我想在 /usr/share/dict/words 中找到所有 12 个字母的单词以 c 开头的并以 er 结尾.在我的脑海中,一个可行的模式可能类似于:

grep -E '^c.{9}er$' /usr/share/dict/words

它发现:

cabinetmaker
calcographer
calligrapher
campanologer
campylometer
...

但是那个.{9}打扰我。感觉太神奇了,用原来约束中定义的数字减去所有 anchor 字符的总长度。

有什么方法可以重写这个正则表达式,这样它就不需要预先进行计算,允许文字 12直接在模式中使用?

最佳答案

您可以使用 -x 选项,它只选择与整行完全匹配的匹配项。

grep -xE '.{12}' | grep 'c.*er'

Ideone Demo

或者使用 -P 选项将模式阐明为 Perl 正则表达式并使用先行断言。

grep -P '^(?=.{12}$)c.*er$'

Ideone Demo

关于regex - 匹配特定长度的单词,锚定,不做魔法数学,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25211079/

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