我正在尝试编写一个匹配人类可读引用值的正则表达式。作为一个例子,XML属性。我遇到的问题是,如果考虑属性的结束引用和后续属性的开始引用,实际引用引用区域之间的数据。这是我到目前为止的表达方式:
(?<=\")(?(?!\s+\")[^\"]+)(?=\")
我试图用简单的英语表达的是:引用(不要捕获它),如果没有后跟只是在另一个引号中终止的空格,则匹配任何不是引用后跟另一个引号的内容(不捕获最后一个引号)引号)。
这是我的样本数据:
<computer name = "printserver" model = "1000ZS" />
正则表达式产生3个匹配:
我认为,如果我能找到一种方法告诉正则表达式引擎跳过其他所有事件,我就会拥有它。
这是另一个示例数据集,有点像QML类属性:
field1: "value1" field2: "value2" field3: "value3"
我可以“看到”引用的数据,但通过正则表达式提取它是打败了我: - )
我在我的项目中使用.NET 4.5 System.Text.RegularExpressions框架。我没有针对像XML,JSON,QML等特定标记,但我正在寻找一个通用的正则表达式,它只是抓住引用的值,类似于我们将数据解释为人类......
有什么建议吗?谢谢!
答案 0 :(得分:2)
您可以随时使用匹配中的报价:
\"([^\"]+)\"
从第一个捕获组中提取所需的部分。
如果它明确是以空格开头的引号,那么您可以使用您使用的部分,稍微调整一下:
\"((?:(?!\s+\")[^\"])+)\"
如果你只知道字符串包含这样的简单模式,可能是这样的:
(?:(?!\s+\")[^\"])+(?=\")