Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式混淆_C#_Regex - Fatal编程技术网

C# 正则表达式混淆

C# 正则表达式混淆,c#,regex,C#,Regex,我想用正则表达式检查一个名称,但我没有得到令人信服的结果。有人能告诉我正则表达式模式有什么问题吗 foreach(Match m in (Regex.Matches("Jack_Sparrow","^[A-za-z]+[^-]*(\\d)*$"))) { Console.WriteLine("{0} found at index{1}",m.Value,m.Index); } 我可以知道为什么我把杰克·斯派洛(Jack_Sparrow)作为输出,尽管没有检查模

我想用正则表达式检查一个名称,但我没有得到令人信服的结果。有人能告诉我正则表达式模式有什么问题吗

foreach(Match m in
(Regex.Matches("Jack_Sparrow","^[A-za-z]+[^-]*(\\d)*$")))
     { 
      Console.WriteLine("{0} found at index{1}",m.Value,m.Index);
     }

我可以知道为什么我把杰克·斯派洛(Jack_Sparrow)作为输出,尽管没有检查模式中的下划线(u)?我宁愿把杰克·斯派洛作为输出。我需要什么修改

[^-]
检查除-之外的任何字符,因此这是与下划线匹配的字符。我不确定你到底想配什么

您是否正在尝试将字母以外的所有内容都更改为空格?

foreach(匹配中的m) (正则表达式匹配(“Jack_Sparrow”,“A-Za-z]”) { WriteLine({0}在索引{1}处找到,m.Value,m.index);
}

角色范围的前半部分包括它

[A-za-z]
创建从大写A到小写z的范围,然后创建从小写A到小写z的另一个范围。由于ASCII值的计算方式,这些范围在其第二部分重叠。具体而言,
A-z
创建从ASCII字符65(A)到字符122(z)的范围。下划线字符的值为95,介于两者之间。由于您的正则表达式已被锚定,因此此字符类已被更改。我已将您的字符类更改为在此示例中包含分组括号,以便您可以看到它正在捕获“Jack_Sparrow”的整个文本


您应该能够通过将字符范围改为
[A-Za-z]
来解决此特定匹配问题。但是,它仍将匹配第一部分(“Jack”),然后
[^-]*
部分将匹配字符串的其余部分(“U Sparrow”),仍然使其成为有效匹配项。如果您可以提供其他一些文本示例,那么我们可以帮助您进一步细化此内容。根据您提供的当前信息,很难判断如何最好地解决
[^-]
问题。

如果我省略[^-],那么我将得到“Jack_Sparrow”作为一个输出。我可以知道为什么吗?Charles仍然是对的,即使他解决了这个问题,它将继续匹配,因为
[^-]
@Ralph:是的,刚才提到了。我应该在前面提到。呃..不是真的。他用
$
结束他的正则表达式。它必须匹配字符串的结尾,否则它将根本不匹配。这不会只匹配“Jack”。@Ralph:我的意思是,前导的
[A-Za-z]+
将只匹配“Jack”,然后匹配
[^-]*
之后将拾取所有内容。它还将匹配字符串“Jack”如果他只是修改了最初的字符类,那么就其本身而言,是否有任何成为正则表达式专家的正则表达式参考?在我看来,正则表达式正在引起人们的头痛,人们只是猜测,或者一些人可能会使用已经定义的正则表达式,我认为没有多少人是专家?如何成为专家?听起来你需要做的是做一个
str_替换(““,”,$username)
。但是,除非您更好地描述您的问题或给出更多的示例,否则没有人能够真正知道。