user3214294
user3214294

Reputation: 41

Remove empty spaces and period

I cannot get this regex to work:

"4.  182 ex" (number, period, 2 blank spaces, 3 numbers, blank space, 2 characters"

The regex syntax should return "4182" and remove period, blank spaces, and characters.

Can you help me please?

EDIT!!!

Thanks everyone but I missed the key question:

a) the regex shall only find the value (4182) when the same line contains a specific text for example "magic", so for example:

"Magic 4. 182 ex"

b) the regex shall "only" find the value (4182) when the table contains a specific text for example "Magic":

"Magic 4. 182 ex

Lisefeo 2. 123 fg

Nioos 3. 124 df"

specific text = exact match or contains those charachters

My regex that I've tried so far but does it work for a whole table (not just a line) ?

(Magic.*?(\d).\s\s(\d{3})\s\w\w)

Upvotes: 1

Views: 132

Answers (3)

Toto
Toto

Reputation: 91488

Just remove all characters that are not digit:

Perl:

$string =~  s/\D+//g;

or php:

$string = preg_replace('/\D+/', '', $string);

According to your updated question, you could do:

$string =~ s/^Magic(\d+)\.  (\d{3})\b.*$/$1$2/

or, with php:

$string = preg_replace('/^Magic(\d+)\.  (\d{3})\b.*$/', '$1$2', $string);

Upvotes: 2

Vijay
Vijay

Reputation: 67291

^([\d]+)\.[\s]+([\d]+)[\s]..

Tested with perl:

> echo "4. 182 ex" | perl -lne 'print $1,$2 if(/^([\d]+)\.[\s]+([\d]+)[\s]../)'
4182

Upvotes: 0

SamWhan
SamWhan

Reputation: 8332

For it to match exactly what you said, use:

(\d)\.\s\s(\d{3})\s\w\w

You'll get it in two groups, first digit and second digit group.

RegEx101 exmple

Regards.

Upvotes: 0

Related Questions