.net - 正则表达式 - 匹配括号之间的引号
问题描述
示例字符串:
cov('年龄', ['5','7','9'])
我有这个与引号内的值匹配的正则表达式:
(["'])(?:(?=(\\?))\2.)*?\1
我正在尝试将其修改为仅使用前瞻/后视从示例字符串返回方括号内的引号:
(?<=\[)(["'])(?:(?=(\\?))\2.)*?\1(?=\])
但它匹配方括号内的所有内容。
我怎样才能只匹配没有逗号的引号,就像第一个正则表达式一样,但在方括号内?
编辑。
语言是.NET。
解决方案
如果支持,一个选项是使用\G
锚点和捕获组:
(?:\[|\G(?!^))('[^']+'),?(?=[^\]]*\])
在零件
(?:
非捕获组\[
比赛开幕[
|
或者\G(?!^)
在上一场比赛结束时断言位置
)
关闭非捕获组(
捕获组 1'[^']+'
匹配'
,除 之外的任何字符 1 次以上,然后再次'
匹配'
)
关闭组 1,?
匹配一个可选的,
(?=[^\]]*\])
积极前瞻,断言结束]
例如
string pattern = @"(?:\[|\G(?!^))('[^']+'),?(?=[^\]]*\])";
string input = @"cov('Age', ['5','7','9'])";
var results = Regex.Matches(input, pattern)
.Cast<Match>()
.Select(m => m.Groups[1].Value)
.ToArray();
foreach(string result in results)
{
Console.WriteLine(result);
}
输出
'5'
'7'
'9'
推荐阅读
- backbone.js - 升级到主干 1.3.3 后主干模型属性嵌套两次
- python - 如何用字典保存类的对象以进行设置
- javascript - 我从一个扩展脚本收到一条消息到另一个,我可以 alert() 消息,但我不能将它分配给任何变量
- angularjs - $routeChangeSuccess 内部指令不会触发
- swift - 我如何将数据注入或添加到我的表中,因为它不起作用?
- c - 尝试从文件中读取下一行/字符时出现分段错误
- java - 如何使用泛型和可能的反射减少代码
- python - python中for循环的流程
- java - 我只是很难从我的 java 类中理解类材料
- javascript - JSON 数据未附加到 div