从评论中提取版本号

时间:2017-11-17 09:41:02

标签: php regex

我有一个CSS(或HTML或JS)文件,文件开头附近有注释/* Version: 1.2.1 */

使用PHP / regex,如何获取包含'1.2.1'的字符串?

我为RTFM而道歉,但我无法在Google上找到答案。学习正则表达式的任何方向都会很棒!

2 个答案:

答案 0 :(得分:1)

$str = '/* Version 1.2.1 */';
preg_match('/version\s(.*)\s\*/i',$str,$matches);

print_r($matches[1]);
  

非常简单,\s(.*)\s捕捉其间的任何内容   spaces作为第一组。显示首先捕获的组$matches[1]

如果你很好奇它是如何运作或想要自己学习的?你可以从这里直接潜入它,我发现这对初学者非常有帮助。

Regular Expressions!

DIY

答案 1 :(得分:1)

首先是正则表达式学习,我强烈推荐这两个网站:

测试你的正则表达式regex101特别有用。

话虽如此,您有两种选择:

  1. 您希望使用捕获组。
  2. 你想只得到一场比赛。
  3. 如果您可以使用捕获组,简单的正则表达式将起作用:

    ^\s*\/\* Version: (\d\.\d\.\d) \*\/
    

    这将捕获组1中的版本号(demo)。

    如果您只想获得匹配的版本号,但又不想打扰捕获组,则必须使用外观:

    • lookbehind允许您检查比赛前的文字。在您的情况下:(?<=\/\* Version: )
    • 以后检查评论结束:(?= \/\*)

    使用版本号匹配(demo)进行汇总:

    (?<=\/\* Version: )\d\.\d\.\d(?= \*\/)