iOS

You greedy, greedy RegEx

Remember not too long ago I had to confess my regular expressions deficiencies to you, the dear reader, regarding an overly verbose regular expression I needlessly crafted, not realizing the greedy nature of the RegEx rendered part of it completely unnecessary?

It happened again.

This time it happened to me with a regular expression that I’ve used many times before. It has to do with my blog posting shortcut(s) and how I handle parsing markdown footnotes in iA Writer documents.

Here’s the regular expression I was using to find footnotes in my iA Writer texts:

\[\^(.+)]

My thinking when I wrote it is that it would find anything starting with [^, followed by one or more of any character, and ending in ]. Which it did, and it usually did it the way I expected it to. But then one day I typed the following paragraph: …

(Read More)

My iPad Upgrade

You may have observed that my frequency of writing here has slowed a bit, but I’m not dead yet. Vic and I are working on a website for Ronnie’s soon-to-debut podcast. In addition to that, I’ve spent some fairly non-productive time this past week playing with a major upgrade to my iPad life, namely a 2020 12.9” iPad Pro with Magic Keyboard.

My 2020 12.9” iPad Pro with Magic Keyboard

Coming from a 10.5” 2019 iPad Air, this iPad Pro seemed massive at first, and I really worried that I’d made a mistake. But now I know I didn’t. I do a lot of work on my iPad, and I love the screen real estate.

I also use my iPad as a tablet much of the time, if not most of the time, and while the 12.9” model is a little more unwieldy for that, it’s fine. …

(Read More)

Regular Expressions and Shortcuts, Part 4

This post is part of a series on Regular Expressions and their applications in the Shortcuts app.

Regular Expressions and Shortcuts, Part 1

Regular Expressions and Shortcuts, Part 2

Regular Expressions and Shortcuts, Part 3

Regular Expressions and Shortcuts, part 3.5

Using regular expressions in shortcuts is pretty simple. The Match Text block will always treat the text to match as a regular expression, and the Replace Text block has an option to treat the text to replace as a regular expression.

Shortcut actions to grab file names from a directory listing supplied by Secure Shellfish

In the above image, the Match Text block takes the directory contents list, which looks like this:

hugo-files/data/links/cars.json
hugo-files/data/links/podcasts.json
hugo-files/data/links/language.json
hugo-files/data/links/apps.json
hugo-files/data/links/security.json
hugo-files/data/links/linux.json
hugo-files/data/links/programming.json
hugo-files/data/links/apple.json

And performs a match to grab just the file name without the file extension, using the regular expression I talked …

(Read More)

Regular Expressions and Shortcuts, Part 3.5

This post is part of a series on Regular Expressions and their applications in the Shortcuts app.

Regular Expressions and Shortcuts, Part 1

Regular Expressions and Shortcuts, Part 2

Regular Expressions and Shortcuts, Part 3

Before continuing on and looking at how to integrate the regular expression we’ve been talking about so far into a shortcut, I want to incorporate a piece of feedback from Allister Jenks.

I originally came up with this:

^(?:.+\/){1,}(.+)\.json$

Allister points out that there’s a much more logical and concise way of doing it.

He’s right, of course. The following works perfectly and makes more sense.

^(?:.+\/)+(.+)\.json$

Actually, we don’t even need the + after the first group, thanks to greedy matching. By …

(Read More)

Regular Expressions and Shortcuts, Part 3

This post is part of a series on Regular Expressions and their applications in the Shortcuts app.

Regular Expressions and Shortcuts, Part 1

Regular Expressions and Shortcuts, Part 2

Hi, it’s me again, the guy with the terrible regular expression that I keep yammering on and on about:

^(?:.+\/){1,}(.+)\.json$

Last time I explained how (.+\/){1,} works to match file path directories in a file name, like these:

hugo-files/data
hugo-files/
hugo-files/data/links/

I did not explain, however, why the first part of the regular expression contains ?: inside the first set of parenthesis, like this:

(?:.+\/){1,}

In order to understand this, you have to understand the role of the parenthesis in regular expressions.

First, they do what I said last time they do: group things together for the purposes of applying a subsequent modifier to everything in the group. In our case, because …

(Read More)