我试图捕获.txt文档中的每个单词。在C#中涉及撇号的正则表达式的问题
单词被定义为可能有撇号(由于输入能够使用任一字符而被俘获的撇号和“右单引号”字符)的任何不间断字符和连字符串,或者作为正则表达式:
[a-zA-Z\-]+['a-zA-Z\-\’\']*
现在,这似乎是在几个网上正则表达式测试web应用程序thingos工作,但它只是似乎并不想在我的C#代码工作,我不明白为什么:
MatchCollection matches = Regex.Matches(input_String.ToLowerInvariant(),
@"[a-zA-Z\-]+['a-zA-Z\-\’\']*");
string[] sorting_String = matches.Cast<Match>().Select(match => match.Value).ToArray();
当我和rd像“我是”包含在文本中,它将单词“i”和“m”作为单独的单词返回,而不是单个条目“i'm”。
这次我没有发现谷歌搜索的任何内容,因为它能够在网上测试人员中按照预期工作......而且我无法弄清楚它是否是逃避问题......我很难过。
有人可以向我解释为什么它没有返回我期望的C#?或者至少,与System.Text.RegularExpressions库?我认为这只是我愚蠢/无知。
编辑1:这里是当地人显示的问题的屏幕截图 - Image of Locals 它应该是“书”。 咦,我刚才检查我的输入字符串变量,它看起来像我得到的东西是这样的:Image of encoding issue? maybe?
Ehhhh,输入的是一个txt文件 - 和它的格式被保留在文件中...所以在我的代码中发生了一些不好的事......至少,呃,这就是我现在猜测问题的地方......我不是这个XD的专家。对不起,我很烦恼,但是我能指出一些可以帮助我的资源吗?
尝试删除'“@”'。 –
[我无法重现问题](http://ideone.com/dSDvY4)。此外,更好的模式可以是'[a-zA-Z] +(?:['' - ] [a-zA-Z] +)*'或甚至'\ p {L} +(?:['' - ] \ p {L} +)*'。 –
@MichałTurczyn我的第一个想法,但没有@它甚至不是一个合法的字符串文字。 @在这里是正确的。 –