嗨我需要找到一个大字符串中的所有匹配项,我发现了这个问题
Detect particular tokens in a string. C#
这看起来很完美!唯一的问题是没有用。这个问题和我的问题之间的区别在于,不是使用#\ w +#而是需要使用[[\ w +]]。这是我的代码(某人是我的大字符串):
Regex reg = new Regex(@"[[\w+]]");
foreach (Match m in reg.Matches(sb.ToString()))
{
RenderHtmlRecursive(helper, sb, path, m.Value);
}
当我运行这个时,我得到1个匹配:)但是值是(m.Value):“t]”
sb(现在是小文字):卡片[[RegisterText]]
有什么想法吗?
答案 0 :(得分:5)
[
和]
是正则表达式中使用的特殊字符,如果您希望匹配该字符,则需要对其进行转义。
只需将其更改为以下内容即可;
Regex reg = new Regex(@"\[\[\w+\]\]");
答案 1 :(得分:3)
这将是一个使用DAFSA的绝佳机会,{{3}}是一种没有有效载荷的Trie形式。高效,O(n)查找大字符串中的短语。
答案 2 :(得分:-2)
您可以在regex中考虑命名令牌。例如 ((((邮政信箱| 2 PO \ SBOX)\ S * \ d *)),\ S?)((((\ W \ d \ S \,] )),\ S???? )?((?([\ w \ s - ] \ w \ s(st \ s)?[\ w] \ s(街道| st | road | rd | close | cl | avenue | ave | av | path | ph | drive | drv | LOOP | COURT | CT | CIRCLE | LANE | LN))),?\ s?))?((?([\ p {Ll} \ p {Lu}} \ p {Lo} \ p {Pc} \ p {Lt} \ p {Lm} \ s] )),?\ s?)?((?(Victoria | VIC |新南威尔士州| NSW |南澳大利亚州|南澳大利亚州|北领地| NT |西澳大利亚州|华盛顿州|塔斯马尼亚州| TAS | ACT |昆士兰州| QLD))\ s *)?(?(\ d {4}),?\ s?)?(?(澳大利亚))?
28 Lidco Street,Arndell Park,Sydney 2148
要评估您的regx表达式,在http://www.codeproject.com/Articles/3669/Expresso-A-Tool-for-Building-and-Testing-Regular-E
使用Expresso - 构建和测试正则表达式的工具非常方便