C# 如何使用正则表达式获取起始文本和结束字符之间的字符串?
我想得到以color=开头,以双引号结尾的字符串,带括号,带参数或不带参数,有时一行中可能有许多带引号的单词。我只想选择匹配的起始词和结束引号 这是我的输入文件C# 如何使用正则表达式获取起始文本和结束字符之间的字符串?,c#,regex,C#,Regex,我想得到以color=开头,以双引号结尾的字符串,带括号,带参数或不带参数,有时一行中可能有许多带引号的单词。我只想选择匹配的起始词和结束引号 这是我的输入文件 color="functions.getcolor('someinput')" color="getcolor()" color="!model.type && functions.getcolor(model.type, cofig.value)" color="model.type == enums.someenum
color="functions.getcolor('someinput')"
color="getcolor()"
color="!model.type && functions.getcolor(model.type, cofig.value)"
color="model.type == enums.someenum"
color="(something=something)||(Something=somethingelse)"
color="model.type" mode="getmode()"
这是我的正则表达式
color=\".+\(.+\)*\"$
我的当前输出是除输入文件中的第4行之外的所有选中行
但我的要求是选择与前3行文本相似的行
预期结果
如何为此编写正则表达式?似乎在引号中,您希望能够找到具有某种函数调用的文本。如果是这种情况,这个正则表达式将匹配第1-3行,而不是第4-6行。如果遇到更多问题,可以继续扩展[]中允许的字符
是否要查找调用getcolor的所有行…?除了在正则表达式的开头添加“^”以确保“color=”位于开头之外,它完全符合您的描述。@Archer简单地添加“^”不会使正则表达式只产生op提到的3个预期结果。我想当我昨天测试它时,它修复了其中一个?@w00ngy它做了他所描述的。“这个问题不清楚。”阿切尔同意了,我也被这个问题弄糊涂了!如果你能找出一个表达式来反转这个表达式,并使用排除[^…]而不是包含[a-zA-Z.!&],它将更易于管理。
color="functions.getcolor('someinput')"
color="getcolor()"
color="!model.type && functions.getcolor(model.type, cofig.value)"
^color=\"([a-zA-Z.! &])+\(.+\)*\"$