snowflakekiller
snowflakekiller

Reputation: 3568

delete matched characters using regex in ruby

I need to write a regex for the following text:

"How can you restate your point (something like: \"<font>First</font>\") as a clear topic?"

that keeps whatever is between the

\" \"

characters (in this case <font>First</font>

I came up with this:

/"How can you restate your point \(something like: |\) as a clear topic\?"/

but how do I get ruby to remove the unwanted surrounding text and only return <font>First</font>?

Upvotes: 0

Views: 132

Answers (3)

Cary Swoveland
Cary Swoveland

Reputation: 110675

You certainly can use a regular expression, but you don't need to:

str = "How can you restate (like: \"<font>First</font>\") as a clear topic?"

str[str.index('"')+1...str.rindex('"')]
  #=> "<font>First</font>"

or, for those like me who never use three dots:

str[str.index('"')+1..str.rindex('"')-1]

Upvotes: 0

Sagar Pandya
Sagar Pandya

Reputation: 9497

lookbehind, lookahead and making what is greedy, lazy.

 str[/(?<=\").+?(?=\")/] #=> "<font>First</font>"

Upvotes: 2

dawg
dawg

Reputation: 103754

If you have strings just like that, you can .split and get the first:

> str.split(/"/)[1]
=> "<font>First</font>"

Upvotes: 0

Related Questions