【问题标题】:Use regex to capture a string that has special characters使用正则表达式捕获具有特殊字符的字符串
【发布时间】:2023-03-04 14:48:01
【问题描述】:

我正在尝试使用正则表达式来解析字符串并提取所需的数据。这是我的字符串:

验证 ELEMENT 的控制值 - VerifyFirstRowSearchNotes 为 〜创建统计储备:〜IP:索赔司机; IP 角色:所有者, 司机~曝光

我正在尝试使用以下正则表达式模式捕获数据。我特别对“as”后面的数据感兴趣。但是,我只能捕获下面的控制值,而不能在“as”之后提取任何内容并将其分配给字段组:

string actionpattern = @"Validate control value for ELEMENT - (?<control>.*?)as (?<fields>.*?)";
var regex = new Regex(actionpattern, RegexOptions.IgnoreCase);
var match = regex.Match({above string});

让我知道我做错了什么。我是正则表达式的新手,正在学习中。

【问题讨论】:

  • 预期结果是什么?
  • @AhmedAbdelhameed 啊,当然。如果您删除问号(?&lt;fields&gt;.*?),您将使其变得贪婪并匹配(?&lt;fields&gt;.*)之后的所有内容@
  • @WiktorStribiżew 我的预期结果应该是 match.Groups["control"] = VerifyFirstRowSearchNotes match.Groups["fields"] = ~Creating Stat Reserve: ~IP: Claimant Driver; IP 角色:所有者、司机~曝光
  • 所以,你应该使用(?&lt;fields&gt;.*)

标签: c# regex regex-group


【解决方案1】:

如果您删除这部分中的问号(?&lt;fields&gt;.*?),您将使其变得贪婪并匹配(?&lt;fields&gt;.*)之后的所有内容

你的正则表达式看起来像:

Validate control value for ELEMENT - (?&lt;control&gt;.*?)as (?&lt;fields&gt;.*)

【讨论】:

  • 啊!这是一个愚蠢的错误。感谢您指出了这一点。它的工作。
猜你喜欢
  • 2022-11-16
  • 1970-01-01
  • 2019-10-15
  • 1970-01-01
  • 1970-01-01
  • 2016-05-16
  • 1970-01-01
  • 2023-01-17
  • 1970-01-01
相关资源
最近更新 更多