Jump to content
Chris McKulka

Multi-line regex replace issue

Recommended Posts

I am creating my first workflow that has a regular expression that operates against a string with multiple lines. To be clear when I say multiple lines I mean there are embedded '\n' characters.

 

The replacement doesn't seem to working correctly. See attached picture with debug output. Instead of emitting a '\n' just the letter 'n' (vs. a newline) is being emitted.

 

I attached the full script that I am trying to replicate but that's just for context. The screenshot captures the issue with a very simple set of input text and a trivial regex.

 

Appreciate your help!

Screen Shot 2018-02-20 at 11.45.23 PM.png

full script.png

Share this post


Link to post
Share on other sites
2 hours ago, Chris McKulka said:

Issue is fully reproducible

 

Not sure this isn't the expected behaviour, tbh.

 

As a workaround, you can use a capture group to keep the newline from the input:

 

regex-capture.png.cf989ca373a8df66cd2a89d9e87e9580.png

Share this post


Link to post
Share on other sites

Thank you for the quick and thoughtful response. Thank you for the suggestion re. using a capture group. You are correct it does work and maybe my workaround, but it definitely isn't elegant.

 

As far I can Alfred's behavior is incorrect. The perl command below returns the correct result. See pic below.

 perl -pe 's/[0-9]\n/*\n/g'

Chris

Screen Shot 2018-02-22 at 12.01.10 AM.png

Share this post


Link to post
Share on other sites

Sorry about the slow reply on this. I've now had a chance to look into what is happening.

 

Alfred is using NSRegularExpression which treats \ in the replacement template string as a literal, and it looks like it's just being stripped in the replacement.

 

See Table 3 here:

https://developer.apple.com/documentation/foundation/nsregularexpression?language=objc

 

If you were to actually put a new line in the replacement (i.e. instead of using \n, use alt+return), then it works as expected.

 

Cheers,

Andrew

Share this post


Link to post
Share on other sites

×