Strange regexp behavior

I do not understand the neo4j query language. At first everything you can do with regexp is described in the documentation. From what I understand of your question, you would need “name”, “second name” and “middle name” in distinct predicates and do something like as below. There is no regexp offset. So you need a predicate for each.

{
  directors(func: regexp(second.name@en, /^Spielberg.*$/)) 
  @filter(regexp(name@en, /^Steven*$/) and regexp(middle.name@en, /^some*$/))  {
    name@en
  }
}