删除空格和句点

时间:2014-01-20 08:26:43

标签: regex

我不能让这个正则表达式工作:

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

正则表达式语法应返回“4182”并删除句点,空格和字符。

你能帮我吗?

EDIT !!!

谢谢大家,但我错过了关键问题:

a)当同一行包含特定文本(例如“magic”)时,正则表达式找到值(4182),例如:

“Magic 4. 182 ex”

b)当表包含特定文本时,正则表达式“仅”找到值(4182),例如“Magic”:

“Magic 4. 182 ex

Lisefeo 2. 123 fg

Nioos 3. 124 df“

特定文字=完全匹配或包含那些字符

我到目前为止尝试过的正则表达式但它是否适用于整个表(不仅仅是一行)?

(魔术。*?(\ d)。\ S \ S(\ d {3})\ S \ W \ w)的

3 个答案:

答案 0 :(得分:2)

只需删除所有不是数字的字符:

的Perl:

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

或 PHP:

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

根据您更新的问题,您可以这样做:

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

或者,用php:

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

答案 1 :(得分:0)

为了使其与您所说的完全匹配,请使用:

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

你会分成两组,第一位和第二位数组。

RegEx101 exmple

问候。

答案 2 :(得分:0)

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

使用perl进行测试:

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