我在为我的字符串构建正确的正则表达式时遇到问题。我想要做的是从我的字符串中获取所有实体;它们以 '
开头和结尾。这些实体可以通过一些数字和前面的#
来识别。但是,不以 '
开头或结尾的实体(在本例中为以 #
开头的电话号码)根本不应该匹配。
我希望有人可以帮助我,或者至少告诉我,我想做的事情在一个正则表达式中是不可能的。谢谢:)
字符串:
'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/