Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi,
The regular expression (\d{15,16}) matches a substring in a cell. I want to extract the remaining part of the cell ie. from the character after the matched substring till the end of the string in the cell using a regular expression. Is it possible to do this? Thanks in advance for the help. Regards, Raj |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
On Sat, 1 May 2010 05:39:32 -0700 (PDT), Raj wrote:
Hi, The regular expression (\d{15,16}) matches a substring in a cell. I want to extract the remaining part of the cell ie. from the character after the matched substring till the end of the string in the cell using a regular expression. Is it possible to do this? Thanks in advance for the help. Regards, Raj (\d{15,16})([\s\S]*) will capture everything in the cell and after your "match" into Group 2 --ron |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
On Sat, 01 May 2010 14:47:46 -0400, Ron Rosenfeld
wrote: On Sat, 1 May 2010 05:39:32 -0700 (PDT), Raj wrote: Hi, The regular expression (\d{15,16}) matches a substring in a cell. I want to extract the remaining part of the cell ie. from the character after the matched substring till the end of the string in the cell using a regular expression. Is it possible to do this? Thanks in advance for the help. Regards, Raj (\d{15,16})([\s\S]*) will capture everything in the cell and after your "match" into Group 2 --ron Can't [\s\S] be replaced by . like this (\d{15,16})(.*) Lars-Åke |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
To clarify, the regex should return " Raffles Traders" from the string
below: NRK2D 986123456789312 Raffles Traders The regex (\d{15,16})([\s\S]*) is returning "986123456789312 Raffles Traders" Regards, Raj On May 2, 12:08*am, Lars-Åke Aspelin wrote: On Sat, 01 May 2010 14:47:46 -0400, Ron Rosenfeld wrote: On Sat, 1 May 2010 05:39:32 -0700 (PDT), Raj wrote: Hi, The regular expression (\d{15,16}) matches a substring in a cell. I want to extract the remaining part of the cell ie. from the character after the matched substring till the end of the string in the cell using a regular expression. Is it possible to do this? Thanks in advance for the help. Regards, Raj (\d{15,16})([\s\S]*) will capture everything in the cell and after your "match" into Group 2 --ron Can't [\s\S] be replaced by . like this (\d{15,16})(.*) Lars-Åke |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Just in case you are interested, here is some non-RegEx code that finds the
same part of your text (the result is returned in the variable named TailEnd)... Text = "NRK2D 986123456789312 Raffles Traders" For X = 1 To Len(Text) If Mid(Text, X, 15) Like String(15, "#") Then TailEnd = Mid(Text, X + 15) Exit For End If Next -- Rick (MVP - Excel) "Raj" wrote in message ... To clarify, the regex should return " Raffles Traders" from the string below: NRK2D 986123456789312 Raffles Traders The regex (\d{15,16})([\s\S]*) is returning "986123456789312 Raffles Traders" Regards, Raj On May 2, 12:08 am, Lars-Åke Aspelin wrote: On Sat, 01 May 2010 14:47:46 -0400, Ron Rosenfeld wrote: On Sat, 1 May 2010 05:39:32 -0700 (PDT), Raj wrote: Hi, The regular expression (\d{15,16}) matches a substring in a cell. I want to extract the remaining part of the cell ie. from the character after the matched substring till the end of the string in the cell using a regular expression. Is it possible to do this? Thanks in advance for the help. Regards, Raj (\d{15,16})([\s\S]*) will capture everything in the cell and after your "match" into Group 2 --ron Can't [\s\S] be replaced by . like this (\d{15,16})(.*) Lars-Åke |
#6
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
On Sat, 1 May 2010 17:32:04 -0400, "Rick Rothstein"
wrote: Just in case you are interested, here is some non-RegEx code that finds the same part of your text (the result is returned in the variable named TailEnd)... Text = "NRK2D 986123456789312 Raffles Traders" For X = 1 To Len(Text) If Mid(Text, X, 15) Like String(15, "#") Then TailEnd = Mid(Text, X + 15) Exit For End If Next -- Rick (MVP - Excel) Rick, The OP's original regex (\d{15,16}) will capture the first 15 *OR 16* digit string into capture group 1. So when the *rest* of the string is returned, it will omit digit 16 if present. Your code will return the 16th digit, if present, as a part of "TailEnd" --ron |
#7
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
On Sat, 1 May 2010 13:41:03 -0700 (PDT), Raj wrote:
To clarify, the regex should return " Raffles Traders" from the string below: NRK2D 986123456789312 Raffles Traders The regex (\d{15,16})([\s\S]*) is returning "986123456789312 Raffles Traders" Regards, Raj Obviously, you are not doing what I suggested which was to return the *SECOND* matching group. You are returning the ENTIRE match. Here's an example as to returning the *SECOND* match using VBA: =============================== Option Explicit Function Part2(s As String) As String Dim re As Object, mc As Object Set re = CreateObject("vbscript.regexp") re.Pattern = "(\d{15,16})([\s\S]*)" If re.test(s) = True Then Set mc = re.Execute(s) Part2 = mc(0).submatches(1) End If End Function ================================== --ron |
#8
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
On Sat, 01 May 2010 21:08:01 +0200, Lars-Åke Aspelin
wrote: Can't [\s\S] be replaced by . like this (\d{15,16})(.*) Lars-Åke Your suggestion will work IF and ONLY IF there are no line feeds or carriage returns in the cell. In some flavors, there is an option to have Dot match newline, but such does not exist in VBA (or Javascript). If the OP, rather than wanting to extract everything to " ... the end of the string in the cell" only wanted to extract everything to the end of the line, and ignore anything in the cell after a newline character, then (.*) would be appropriate. --ron |
#9
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I have made another post before Ron's last post. I have explained the
requirement with an example. Regards, Raj On May 2, 1:43*am, Ron Rosenfeld wrote: On Sat, 01 May 2010 21:08:01 +0200, Lars-Åke Aspelin wrote: Can't [\s\S] be replaced by . like this (\d{15,16})(.*) Lars-Åke Your suggestion will work IF and ONLY IF there are no line feeds or carriage returns in the cell. *In some flavors, there is an option to have Dot match newline, but such does not exist in VBA (or Javascript). If the OP, rather than wanting to extract everything to " ... the end of the string in the cell" *only wanted to extract everything to the end of the line, and ignore anything in the cell after a newline character, then (.*) would be appropriate. --ron |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
RegExp not matching what I want | Excel Programming | |||
RegExp & VB Noob Qs | Excel Programming | |||
RegExp | Excel Programming | |||
RegExp information | Excel Programming | |||
RegExp - String in VBA | Excel Programming |