.net - 正则表达式 正则表达式 匹配

标签 .net regex c#-4.0

我在为我的字符串构建正确的正则表达式时遇到问题。我想要做的是从我的字符串中获取所有实体;它们以 ' 开头和结尾。这些实体可以通过一些数字和前面的#来识别。但是,不以 ' 开头或结尾的实体(在本例中为以 # 开头的电话号码)根本不应该匹配。

我希望有人可以帮助我,或者至少告诉我,我想做的事情在一个正则表达式中是不可能的。谢谢:)

字符串:

'Blaa lablalbl balbla balb lbal '#39'blaaaaaaaa'#39' ('#39#226#8218#172#39') blaaaaaaaa #7478347878347834 blaaaa blaaaa'

正则表达式:

'[#[0-9]+]*'

想要的比赛:

  • '#39'
  • '#39'
  • '#39'
  • '#226'
  • '#8218'
  • '#172'
  • '#39'

找到匹配项:

  • '#39'
  • '#39'
  • '#39#226#8218#172#39' <- 需要拆分(如果可能在同一个正则表达式中)

另一个正则表达式:

#[0-9]+

找到匹配项:

  • '#39'
  • '#39'
  • '#39'
  • '#226'
  • '#8218'
  • '#172'
  • '#39'
  • '#7478347878347834' <- 不应该在这里:(

语言: C# .NET (4.0)

最佳答案

您无法在一个正则表达式中完成此操作,您需要两个:

首先获取单引号之间的所有匹配项:

'[\d#]+'

然后在所有这些匹配上,执行以下操作:

#\d+

所以你最终会得到类似的结果(在 C# 中):

foreach(var m in Regex.Matches(inputString, @"'[\d#]+'"))
{
    foreach(var m2 in Regex.Matches(m.Value, @"#\d+"))
    {
          yield return m2.Value;
    }
}

关于.net - 正则表达式 正则表达式 匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3709091/

相关文章:

c# - 在 C# 中强制命名参数

.net - 从 Microsoft.Web.Administration 和相对于其根的路径查找物理路径

.net - 在 SemVer 中,当向公众发布测试版时,程序集+文件版本应该是什么?

c# - 子线程结束后如何在主线程中运行一个方法?

vb.net - 正则表达式阻止了程序

javascript - 比较2个句子并获取不同单词的索引

c# - 是否在模型中包含 View 特定信息

c# - 有没有办法调用 .NET Framework 离线安装?

java - 正则表达式,逐字符读取(java)

c# - Linq:选择 1:N 关系的 N 侧的项目