Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Inserting a space between a dot and a character using simple search/replace with regular expressions

Tags:

regex

replace

I want to separate sentences by inserting a space between each period and letter but not between anything else like a dot and a bracket or a dot and a comma.

Consider this:

This is a text.With some dots.Between words.(how lovely).

This probably has some solution in Perl or PHP but what I'm interested in is can it be done in a text editor that supports search/replace based on regexes? The problem is that it would match both the dot and the character and replace will completely obliterate both. In other words, is there a way to match "nothing" between those two characters?

like image 623
Захар Joe Avatar asked Oct 29 '12 15:10

Захар Joe


1 Answers

You could use back references in the replace string. Typically it would look something like:

Search regex:

(\.)(\w)

Replacement pattern (notice the space):

$1 $2

The back references are stand-ins for the corresponding groups.

Alternatively, you could use lookarounds:

(?<=\.)(?=\w)

This doesn't "capture" the text, it would only match the position between the period and the letter/number (a zero-length string). Replacing it would, essentially, insert some text.

Really, though, it depends on the capabilities of your text editor. Very few text editors have a "complete" regular expression engine built-in. I use TextPad which has its own flavor of regular expression which largely does not support lookarounds (forcing me to use the first approach).

like image 107
JDB Avatar answered Oct 20 '22 19:10

JDB