2017-07-19 79 views
0

我试图捕获.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的专家。对不起,我很烦恼,但是我能指出一些可以帮助我的资源吗?

+2

尝试删除'“@”'。 –

+1

[我无法重现问题](http://ideone.com/dSDvY4)。此外,更好的模式可以是'[a-zA-Z] +(?:['' - ] [a-zA-Z] +)*'或甚至'\ p {L} +(?:['' - ] \ p {L} +)*'。 –

+0

@MichałTurczyn我的第一个想法,但没有@它甚至不是一个合法的字符串文字。 @在这里是正确的。 –

回答

1

你可以试试这个[\w\'\-]+[\w\'\-]*,看看它是否工作

我想你应该逃脱第二支架的第一'