我有以下正则表达式:
\b[_\.][0-9]{1,}[a-zA-Z]{0,}[_]{0,}\b
我的输入字符串是:
_49791626567342fYbYzeRESzHsQUgwjimkIfW
.49791626567342fYbYzeRESzHsQUgwjimkIfW
我认为它匹配1.
和2.
,但它只匹配第一个场景。你能帮我找到正则表达式中的错误吗?
答案 0 :(得分:3)
单词边界是单词字符(字母,数字,下划线)与非单词字符或字符串的开头或结尾之间的边界。所以在dot(非单词字符)和字符串的开头之间根本没有单词边界。
在这种情况下,您可以使用锚点来表示字符串的开头,例如
case "/OpenNP":
{
try
{
// where mainForm is a reference to the form
// that contains the buttons, the main form that is shown
mainForm.Invoke((Action)(() => Np.Show()));
}
catch (Exception ex)
{
Console.WriteLine("Form is not shown. " + ex.ToString());
}
}
break;
您还可以使用for item in myStructArray {
// changes copy of item, array is not altered
item.property = newValue
}
for i in 0..<myStructArray.count {
// this does what you need, changes the struct in the array
myStructArray[i].property = newValue
}
和^[_\.][0-9]{1,}[a-zA-Z]{0,}[_]{0,}$
量词来缩短正则表达式,并避免不必要的转义序列,如Toto
*
您还可以使用lookahead和lookbehind(如果可用)来构建自定义边界。