Google displays links to pages in its search results by taking all the text inside an tag as the link. So this:
<a href="#"> <span>1</span> This is a great story </a>
displays in Google search results as:
1 This is a great story
Is there any way to tell Google to index a specific part of the link text, e.g.
<a href="#"> <span class="dont-index-me">1</span> <span class="index-me">This is a great story</span> </a>
So I can have just: 'This is a great story'.
Or is the only option to change the markup:
<span>1</span> <a href="#">This is a great story</a>
No. Google will index an entire page's contents. there is no way to tell Google to ignore part of a page. There are black hat techniques, of course, but those just get you banned if you get caught and aren't worth the risk.