Zebra crossings on bicycle_roads

Hi,
I would like to get the nodes for zebra crossings on bicycle_roads in Hamburg.

What I tried:

[out:json][timeout:180];
{{geocodeArea:hamburg}}->.searchArea;
(
node
“crossing_ref”=“zebra”;
node
“crossing”=“zebra”;
way"bicycle_road"=“yes”;
);
node(w);
out;

As a result I get nodes on bicycle_roads but not zebra_crossings.

Can please someone help me?

I am sorry. I try overpass share

You are either selecting them wrongly, or filtering them in a wrong order. The latter would be more efficient, as you do 2 less spatial filtering.
A. Not selecting from the set

(
  node["crossing_ref"="zebra"](area.searchArea);
  node["crossing"="zebra"](area.searchArea);
  way["bicycle_road"="yes"](area.searchArea);
)->.all;
node.all(w.all);
out;

B. Order of filtering

way["bicycle_road"="yes"](area.searchArea);
node(w)->.all;
(
  node.all["crossing_ref"="zebra"];
  node.all["crossing"="zebra"];
);
out;

For clarity, I made an .all set. But these ->.all can be dropped, and the rest replaced by node._ and (w._) for the default set.
Conceptually, this method A is lazy and messy. In theory, you should separate them.
A3.

(
  node["crossing_ref"="zebra"](area.searchArea);
  node["crossing"="zebra"](area.searchArea);
)->.zebras;
way["bicycle_road"="yes"](area.searchArea)-;
node.zebras(w);
out;

A3.

(
  node["crossing_ref"="zebra"](area.searchArea);
  node["crossing"="zebra"](area.searchArea);
)->.zebras;
way["bicycle_road"="yes"](area.searchArea);
node(w);
node._.zebras;
out;

However as said in this case, there is no need to intersect the separately obtained set of crossings with that of the bike roads. Filtering on the bike roads is preferable.

Thank you very much!!!