Bug #13082
closedRegex match from position behavior with start of line/string special character
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) over 7 years ago
- Description updated (diff)
Updated by akanet (Vincent Woo) over 7 years ago
- Description updated (diff)
Updated by akanet (Vincent Woo) over 7 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) over 7 years ago
- Description updated (diff)
Updated by nobu (Nobuyoshi Nakada) over 7 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) over 7 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"