正则表达式匹配逗号分隔表达式的左侧
Regex match left side of comma-separated expression
希望创建一个正则表达式来匹配以逗号分隔的表达式的左侧,最好忽略任何空格:
abc = a1, def = b2, ghi = c3
表达式将匹配 abc
def
和 ghi
到目前为止已经使用了这个正则表达式 (?<=,).*?(?=\=)
,但是它与第一个值不匹配并且不会忽略空格。
您的模式与第一个值不匹配,因为正面回顾 (?<=,)
断言左侧的逗号对于示例字符串中的第一个值不存在。
该模式不会忽略空格,因为在这部分 .*?(?=\=)
“点星”可以匹配(包括空格)到断言 (?=\=)
为真的点。
获取第一个值的一个选项是使用捕获组并匹配后面以逗号结尾或断言字符串结尾的模式。
(\w+)\s+=\s+\w+(?:,|$)
说明
(\w+)
在组1 中捕获1+个单词字符
\s+=\s+
在空白字符之间匹配 =
\w+
匹配1+个单词字符
(?:,|$)
匹配逗号或断言字符串结尾
这似乎有效:
\w+(?= =)
参见live demo。
在英语中, 个单词字符后跟 " ="
。
希望创建一个正则表达式来匹配以逗号分隔的表达式的左侧,最好忽略任何空格:
abc = a1, def = b2, ghi = c3
表达式将匹配 abc
def
和 ghi
到目前为止已经使用了这个正则表达式 (?<=,).*?(?=\=)
,但是它与第一个值不匹配并且不会忽略空格。
您的模式与第一个值不匹配,因为正面回顾 (?<=,)
断言左侧的逗号对于示例字符串中的第一个值不存在。
该模式不会忽略空格,因为在这部分 .*?(?=\=)
“点星”可以匹配(包括空格)到断言 (?=\=)
为真的点。
获取第一个值的一个选项是使用捕获组并匹配后面以逗号结尾或断言字符串结尾的模式。
(\w+)\s+=\s+\w+(?:,|$)
说明
(\w+)
在组1 中捕获1+个单词字符
\s+=\s+
在空白字符之间匹配=
\w+
匹配1+个单词字符(?:,|$)
匹配逗号或断言字符串结尾
这似乎有效:
\w+(?= =)
参见live demo。
在英语中, 个单词字符后跟 " ="
。