如何制作好的正则表达式?

时间:2013-07-02 22:18:57

标签: regex

我需要一个正则表达式用于所有这些示例:

<319/319hp ***....... 2377860/7094952 87/88mv 2019c 112s 52g 5m> Jadlodajnia [ Wyjscie ] 4
<319/319hp .......... 2377860/7094952 87/88mv 2019c 112s 52g 5m> Ulica Glowna [ E Jadlodajnia W ] 7
<319/319hp ******.... 2377860/7094952 86/88mv 2019c 112s 52g 5m> Ulica Glowna [ E Sklep W ] 7
<319/319hp ********** 2377860/7094952 86/88mv 2019c 112s 52g 5m> Ulica Glowna [ E Sklep W ] 7

在所有这些例子中,我都会得到2377860值,但我不知道如何制作它。

3 个答案:

答案 0 :(得分:1)

可能类似于:

[*.] (\d+)\/\d+

匹配句点或星号,空格,然后匹配一个或多个数字,正斜杠和一个或多个数字。第一个捕获组就是您所追求的。

你当然可以根据你想要的挑剔来缩短或缩短,但我通常会谨慎行事。

Example

答案 1 :(得分:1)

你可以试试像

这样的东西
" (\d{7})/"

后跟7位数字的空格,然后是/

答案 2 :(得分:1)

您可以使用以下内容(因为您使用PCRE引擎,它应该可以工作):

(?<=[.*] )\d+(?=/)

它只会匹配数字。

Online demo here.

如果您的语言不支持后视(但确实如此),您必须使用:

[.*] (\d+)(?=/)

与第一组合作($1)。

Demo here.