我需要识别字符串中的子字符串,例如:
" CityABCProcess测试"或" cityABCProcess测试"
产量:
["城市/城市"," ABC","流程","测试" ]
我们一直使用的正则表达式是:
" [AZ] [AZ] + |([AZ] | [0-9])+ \ C | [AZ] +(?= [AZ])|([AZ] | [O- 9])+"
这一直很好用,但在字符串的情况下会中断:
" X-999"
我们正在以这种方式实施它:
StringBuilder builder = new StringBuilder();
builder.Append("[A-Z][a-z]+|([A-Z]|[0-9])+\b|[A-Z]+(?=[A-Z])|([a-z]|[0-9])+");
foreach (Match match in Regex.Matches(name, builder.ToString()))
{
//do things with each match
}
这里的问题是它不匹配' X'但只有' 999。有任何想法吗?我用regexr.com测试了它,它说这个正则表达式应该匹配两个子串。
答案 0 :(得分:4)
\b
被解释为C#字符串中的转义序列(\ u0008,退格键)。
转义斜杠(即\\b
),或使用@
符号使用逐字字符串:
builder.Append(@"[A-Z][a-z]+|([A-Z]|[0-9])+\b|[A-Z]+(?=[A-Z])|([a-z]|[0-9])+");