【发布时间】:2020-03-29 09:31:25
【问题描述】:
我正在尝试使用以下正则表达式在源代码文件中捕获一些字符串值
[\s\"\']{1}([A-Za-z0-9\_\-]{1,})[\s\"\']{1}
对于类似这样的变量:
var components = 'string_1 string_2 string_3';
但正则表达式仅捕获 string_1 和 string_3 跳过 string_2
我相信这是因为在捕获string_1 值时,正则表达式实际上检测到'string_1(注意' 和space)和string_3'(还要注意space 和') 最终以 string_2 两边都没有,所以它不会被捕获。
如何捕获所有三个值。
请注意,正则表达式需要捕捉以下场景:
"string_1"
'string_1'
"string_1 string2"
'string_1 string2'
"string_1 string2 string3"
等等……
也不需要匹配
$string_1
#string_1$
string_1
//string_1
/*string_1
\string_1
!string_1
等等……
只有当它们在单引号、双引号、空格或这三者的混合对之间时,我才需要捕获这些值。
【问题讨论】:
-
您当前的模式无效,括号不匹配
-
仅供参考
{1}绝对不会做任何事情,除了制造噪音。下划线不需要转义,-在字符类中的第一个或最后一个(你的字符类)也不需要转义。请更正语法错误:您的字符类格式错误 - 如果确实是您的意图,您有一个闭合的 round 括号而不是闭合的 square 括号。
标签: regex