【问题标题】:Regex function clarification正则表达式函数说明
【发布时间】:2019-11-30 09:23:25
【问题描述】:

我有一个字符串,我必须过滤以下内容:

"#Subject = \"@hb\" + @uv_EmployeeID + \" fdsaas\" + @test"

我必须只过滤 @uv_EmployeeID@test 而不是 ""-inner 双引号内的值

【问题讨论】:

  • 我怀疑您发送垃圾邮件的所有语言标签都与您的问题有关。我建议添加您实际使用的一种编程语言。
  • C#是编程语言
  • 最终目的是获取以@开头但不能在双引号内的字符串

标签: regex


【解决方案1】:

这是有效的:new Regex(@"[^""]@{1}[a-zA-Z_]+");

您只需从结果中删除第一个字符,如下所示:

var reg = new Regex(@"[^""]@{1}[a-zA-Z_]+");

var matches = reg.Matches("#Subject = \"@hb\" + @uv_EmployeeID + \" fdsaas\" + @test");

var empId = matches[0].Value.Substring(1); // @uv_EmployeeID
var test = matches[1].Value.Substring(1); // @test

【讨论】:

  • 有没有任何可能的方法来获得前面没有@的匹配项
  • @VIGNESHRK 是的,只需执行 Substring(2) 而不是 1,您将跳过第一个字符 2
  • 在进行正则表达式测试时,我可以发现带有 2-@ 的字符串也得到了匹配。例如:@@uv_employee 也在匹配中。对于我们的要求,我们希望匹配的单词在字符串前面只有一个 @。请帮忙。
  • @ 之前是否总是有一个空格,然后是一个只有小写/大写字母和/或 _ 的单词?如果是,这将完成工作:@"@{1}[a-zA-Z_]+"
猜你喜欢
  • 2012-10-18
  • 2021-12-04
  • 1970-01-01
  • 2013-07-10
  • 2012-07-21
  • 1970-01-01
  • 2013-01-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多