Select the next line after match regex
Solution 1
Did some googling and from what I can grasp, the last parameter to the REGEXP.MATCH
is the capture group to use. That means that you could use you own regex, without the \K
, and just add a capture group to the number you want to extract.
\bOrdernr\s+(\S+)
This means that the number ends up in capture group 1
(the whole match is in 0
which I assume you've used).
The documentation isn't crystal clear, but I guess the syntax is
REGEXP.MATCH(<ZoneName>, "REGEX", CaptureGroup)
meaning you should use
REGEXP.MATCH(<ZoneName>, "\bOrdernr\s+(\S+)", 1)
There's a fair amount of guessing here though... ;)
Solution 2
Description
ordernr[\r\n]+([^\r\n]+)
This regular expression will do the following:
- find the
ordernr
substring - place the line following
ordernr
capture group 1
Example
Live Demo
https://regex101.com/r/dQ0gR6/1
Sample text
1. 21Sid1
2. Ordernr
3. E17222
4. By
5. Seller
Sample Matches
[0][0] = Ordernr
3. E17222
[0][1] = 3. E17222
Explanation
NODE EXPLANATION
----------------------------------------------------------------------
ordernr 'ordernr'
----------------------------------------------------------------------
[\r\n]+ any character of: '\r' (carriage return),
'\n' (newline) (1 or more times (matching
the most amount possible))
----------------------------------------------------------------------
( group and capture to \1:
----------------------------------------------------------------------
[^\r\n]+ any character except: '\r' (carriage
return), '\n' (newline) (1 or more times
(matching the most amount possible))
----------------------------------------------------------------------
) end of \1
----------------------------------------------------------------------
Alternatively
To just capture the line using a look-around so that ordernr
is not included in capture group 0 and to accommodate all the variation of \r
and \n
(?<=ordernr\r|ordernr\n|ordernr\r\n)[^\r\n]+
Live Demo
https://regex101.com/r/pA4fD4/2
R0jiv4
Updated on September 09, 2021Comments
-
R0jiv4 over 2 years
I'm currently using a scanning software "Drivve Image" to extract certain information from each paper. This software enables certain Regex code to be run if needed. It seems to be run with the UltraEdit Regex Engine.
I get the following scanned result:
1. 21Sid1 2. Ordernr 3. E17222 4. By 5. Seller
I need to search the string for the text
Ordernr
and then pick the following lineE17222
which in the end will be said filename of the scanned document. I will never know the exact position of these two values in the string. That is why I need to focus onOrdernr
because the text I need will always follow as the next line.My requirements are such that I need the
E17222
to be the only thing in the match result for this to work. I am only allowed to type plain regular expressions.There is a great thread already: Regex to get the words after matching string
I've tested " \bOrdernr\s+\K\S+ "which works great..
Had it not been that the software don't allow for /K to be used. Are there any other ways of implementing \K?
Continuation
Though If the sample text involves a character behind "Ordernr" the current answer doesn't work to the extent I need. Like this sample:
21Sid1
Ordernr 1
E17222
By
Seller
The current solution picks up "1" and not the "next line" which would be "E17222". in the matched group. Needed to point that out for further involvement on the issue.
-
R0jiv4 almost 8 yearsI can confirm that this answer works for my Software. @ClasG
-
R0jiv4 almost 8 yearsI can also confirm that this answer workes aswell. Though my knowledge of regex is limited and thus I'm not really sure which answer is the better one.. "if there is such a thing". @Ro Yo Mi
-
SamWhan almost 8 years@R0jiv4 That's great. Please consider marking it as accepted to make it easier for people with similar questions to find it.
-
R0jiv4 almost 8 yearsThought I've added a "Contiunation" to my post which involves characters behind Ordernr.
-
Ro Yo Mi over 6 yearsThe subtle difference between this and the accepted answer is that this constrains the match to only allow end of line characters, where as the accepted answer allows the matching of all white space characters and assumes spaces and new line characters are interchangeable which could lead to some odd edge cases.
-
SalesForceGirl about 3 yearsFrom this example, is it possible to split based on the new line after the matched substring? I have a script that needs to split by new line, however due to a system limit if the file is too long it wont work. so i wanted to chunk it up by matching as substring and then finding the end of that line. I am using '\r\n|\r|\n' as my new line regex. @RoYoMi
-
Jeremy Chone almost 3 yearsWow, great explanation. Thanks.
-
Jose Ortega almost 3 yearsThis is a hell of an answer! great job!