要解析的JavaScript正则表达式:设置正确名称为X=值#注释

JavaScript regex to parse: set Properly Name Is X = value # comment

本文关键字:注释 JavaScript 正则表达式 设置      更新时间:2023-09-26

我希望有5个组来解析像这样的单行

set Property name is long = value could be anything 1.0 # comment
 1             2          3         4                      5

set前面可能有空白。属性名称和值之间始终存在=。字符串可以以注释结尾,以#开头。到目前为止,我尝试了

'b(set)'b's*(.*)'b(=)'b(.*)'n

但很快意识到这项任务超出了我对regex的有限了解。

p.s.这必须在JavaScript正则表达式中(无前瞻性,AFIK)。

如果我正确理解了你的问题,这里有一个正则表达式应该符合你的需求:

var rgx = /^'s*(set) ?(.+?)(?:'s+?(=)'s+?)(.+?)(#.*)?$/gm

这匹配:

set Property name is long = value could be anything 1.0 # comment
set foobar baz bazinga = nhaca

你可以在这里测试这个正则表达式

EDIT:修复了在"注释"组中包含#char的问题

如果这是javascript,那么你可以使用这个:DEMO

(?:'s*)(set)(.*)(=)([^#]*)('#.*)*

这意味着:

(?:'s*) - leading spaces, not captured
(set)   - set
(.*)    - property name
(=)     - equals sign
([^#]*) - value which doesn't include a comment sign
('#.*)* - optional comment