Project

General

Profile

Actions

Bug #13082

closed

Regex match from position behavior with start of line/string special character

Added by akanet (Vincent Woo) almost 6 years ago. Updated almost 6 years ago.

Status:
Rejected
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-darwin16]
[ruby-core:78888]

Description

Hello,

Apologies in advance if this question was addressed already, I could not find any information on it.

Regexp#match provides this behavior:

If the second parameter (pos) is present, it specifies the position in the string to begin the search.

So, if you run:

/test/.match "a test", 2

it will return a match. This becomes an issue when you try to write a regex to match "if the pattern begins at the specified point in the string".

/^test/.match "a test", 2

Does not return a match. Using \A does not work either. It's an open question whether this should work, but I think it should. I would expect calling match with a position to treat the string passed in as essentially truncated up to that point.

I should add that the reason I want it to work this way is that queries like

/test/.match "a longer test", 2

will return a match. My real goal is to find if /test/ starts at position 2, so I do need the special line/string start character.

What do you think?

Cheers,
Vincent

Updated by akanet (Vincent Woo) almost 6 years ago

  • Description updated (diff)

Updated by akanet (Vincent Woo) almost 6 years ago

  • Description updated (diff)

Updated by akanet (Vincent Woo) almost 6 years ago

  • Subject changed from Ruby match from position behavior with start of line/string special character to Regex match from position behavior with start of line/string special character

Updated by akanet (Vincent Woo) almost 6 years ago

  • Description updated (diff)

Updated by nobu (Nobuyoshi Nakada) almost 6 years ago

  • Status changed from Open to Rejected

Offset 2 is not a beginning of a line, nor the beginning of the string.
Use \G.

Updated by akanet (Vincent Woo) almost 6 years ago

Thanks, I didn't know about \G! It's a little hard to understand in this situation, do you think it might be helpful to add to the doc on matching with position?

"\G - Matches point where last match finished"

Actions

Also available in: Atom PDF