如何匹配正则表达式

时间:2016-05-30 08:38:17

标签: regex

我想找到SOMETHING发生的年份(最接近的年份字符串模式,可能是2016y或16y或2016y1m3d,在关键字SOMETHING之前)并标记它,例如,更改

  

' 2015y,balabala; 2016y3m4d,SOMETHING发生了'

  

' 2015y,balabala; < mark> 2016y3m4d< mark> ,SOMETHING发生'

简单地匹配年份和关键词' SOMETHING'

,将无法正常工作
echo '2015y, balabala; 2016y3m4d, SOMETHING happens' \
    | perl -ne 's/(\d+y\d+m\d+d|\d+y\d+m|\d+y)(.*)(SOMETHING)/<mark>\1<mark>\2\3/g; print;'

将输出

  

&lt; mark&gt; 2015y&lt; mark&gt; ,balabala; 2016y,SOMETHING发生

任何帮助?

1 个答案:

答案 0 :(得分:1)

您希望模式匹配最接近字符串Xvfb。 仅修改一些正则表达式

SOMETHING

echo '2015y, balabala; 2016y3m4d, SOMETHING happens' 
| perl -ne 's/(.*)\b(\d+y\d+m\d+d|\d+y\d+m|\d+y)\b(.*?)(SOMETHING)/\1<mark>\2<mark>\3\4/g; print;'