我不能让这个正则表达式工作:
"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)的
答案 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)
答案 2 :(得分:0)
^([\d]+)\.[\s]+([\d]+)[\s]..
使用perl进行测试:
> echo "4. 182 ex" | perl -lne 'print $1,$2 if(/^([\d]+)\.[\s]+([\d]+)[\s]../)'
4182