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

本文关键字:数据 选择 正则表达式 | 更新日期: 2023-09-27 18:10:25

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

例如:

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

命令以分号分隔,变量的值总是包含在引号中。然而,这些变量是基于用户输入的,还可能包含其他引号或分号。我曾尝试过分割和子字符串,但它们受到用户输入的影响。如何在不受用户输入影响的情况下做到这一点?

编辑:我没有想到要提到我已经有了一个表达式来选择引号内的数据。然而,我对Regex不够熟悉,无法让它选择变量名。当前Regex表达式为:('".*'")

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

我决定使用的正则表达式是:;(?=(?:[^'"]*'"[^'"]*'")*[^'"]*$)。它选择整个命令(variableName="Hello World"),然后使用Substring选择等号前后的数据。然后使用trim删除引号。它可以完美地工作,并且我可以使用在主引号内转义的引号。

这个Regex命令不是我的功劳。我在网上某个地方找到的(如果我记得在哪里,我会贴在这里)。

感谢所有的答案和链接。

我相信这会达到你的目的:

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

示例:Regex Hero

Regex量词+*默认是贪婪的,将查找最长的匹配。

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

Edit:这对于同一行中的多个实例不起作用,因为它依赖于量词的贪婪性。