正则表达式选择引号内的数据

时间:2014-06-25 16:03:49

标签: c# .net regex selection

我有一个字符串:"var1=\"Some Data\";var2=\"More Data\",我想选择引号内的数据以及左边的数据(变量名)。

例如:

"var1" = "Some Data", "var2" = "More Data"

命令采用分号分隔,变量的值始终包含在引号内。但是,变量基于用户输入,也可能包含其他引号或分号。我试图使用Split和Substring执行此操作,但是它们受到用户输入的影响。如果不受用户输入的影响,我该怎么做?

编辑: 我没想到提到我已经有一个表达式来选择引号内的数据。但是我对Regex不太熟悉,因为它也选择了变量名。当前的Regex表达式为:(\".*\")

2 个答案:

答案 0 :(得分:1)

我决定使用的正则表达式为:;(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)。这将选择整个命令(variableName="Hello World"),然后使用Substring选择等于之前和之后的数据。然后我使用trim来删除引号。它工作得很好,我能够使用在主要报价中转义的报价。

我不相信Regex命令。我在网上找到了它(当我记得在哪里时,我会在这里发布)。

感谢所有的答案和链接。

答案 1 :(得分:0)

我相信这会做你以后的事情:

"(.+)"\s?=\s?"(.+)"

示例:Regex Hero

默认情况下,正则表达式量词+*是贪婪的,并且会查找最长的匹配。

您可以在引用的字符串和=之间添加更多或没有空格的其他测试用例,以确保它能满足您的需求。

编辑:这不适用于同一行的多个实例,因为它依赖于量词的贪婪。