【发布时间】:2015-06-20 15:14:46
【问题描述】:
我有以下函数可以提取以某个字符开头的所有子字符串:
public static List<string> GetStringsStartingWith(string text, char character)
{
List<string> output = new List<string>();
foreach (Match match in Regex.Matches(text, @"(?<!\w)" + character + @"\w+"))
{
try
{
output.Add(match.Value.Replace(character.ToString(), ""));
}
catch (NullReferenceException) { continue; }
}
return output;
}
对于像@test 这样的普通字符串,它可以正常工作。但现在我有一些具有以下格式的字符串:
你好,这是一个@[test1].[test2].[test3] 字符串。
现在,我想要的是一个可以从上面的字符串中提取@[test1].[test2].[test3] 的正则表达式。这种字符串可以有多种格式。例如,某些字符串可能只是 @[test] 或 @[test1].[test2]。
以上函数无法提取字符串并返回null。
更新
我还想提取那些在[ ] 之间有空格的子字符串。喜欢这个:
@[1:contact:Daniel Zahariev]+@[2:contact:Dankajuro].[1:contact:Daniel 扎哈里耶夫]
实际上,这些就像我们在 facebook 或 stackoverflow cmets 上使用的用户标签。我的系统检查字符串,当有@ 时,它会检查它是普通的@(用于电子邮件和其他)还是代表标签。这通过检查@ 之后的下一个字符来检查,如果它是[,那么[ 和] 之间的信息就是用户信息。其他一切都只是普通的文本。
所以对于上面的字符串输出应该是:
@[1:contact:Daniel Zahariev]
@[2:contact:Dankajuro]
【问题讨论】:
-
这个怎么样?
@\[.*\] -
添加你想要捕获的规则
标签: c# asp.net .net regex string