如何匹配以字符串开头的字符串(带正则表达式)

Jae*_*ger 5 regex linux bash

在bash脚本中,我必须匹配以字符串开头3次的字符串lo; 那么lololoba好,loloba是坏的,lololololoba是好的,balololo是坏的.

我尝试了这种模式:"^$str1/{$n,}" 但它不起作用,我怎么能这样做?

编辑:

根据OP的评论,lololololoba现在很糟糕.

Jah*_*hid 6

这应该工作:

pat="^(lo){3}"
s="lolololoba"
[[ $s =~ $pat ]] && echo good || echo bad
Run Code Online (Sandbox Code Playgroud)

编辑(根据OP评论):

如果你想要完全匹配3次(即lolololoba,这应该是不匹配的):

pat="^(lo){3}"到:

pat="^(lo){3}(l[^o]|[^l].)"
Run Code Online (Sandbox Code Playgroud)


Kas*_*mvd 3

您可以使用以下正则表达式:

^(lo){3}.*$
Run Code Online (Sandbox Code Playgroud)

相反,lo您可以放置​​变量。

请参阅演示https://regex101.com/r/sI8zQ6/1

  • 不需要`.*$` - 它没有做任何有用的事情。另外,虽然这是一个有效的正则表达式,但如果不显示如何使用它(例如使用“grep -E”),它就不是一个完整的答案。 (3认同)
  • 嗯,为什么不让你的答案更有用呢? (2认同)