C# 用于匹配C中简单单词的正则表达式?

C# 用于匹配C中简单单词的正则表达式?,c#,regex,C#,Regex,我需要一个正则表达式来只匹配符合以下条件的单词。我在我的C程序中使用它 可以是任何情况 不应该有任何数字 可以包含-和字符,但是可选的 应该以字母开头 我尝试过使用表达式^[a-zA-Z][\'\-]?+$,但它不起作用 下面列出了几个可以接受的单词 伦敦不区分大小写 杰克逊的 非营利性 下面列出了几个不可接受的词 12伦敦包含一个数字,而不是以字母表开头 -不以字母表开头 to:contains:character,不允许使用除-and'以外的任何特殊字符 它匹配以字母字符开头,后跟任意数量字

我需要一个正则表达式来只匹配符合以下条件的单词。我在我的C程序中使用它

可以是任何情况 不应该有任何数字 可以包含-和字符,但是可选的 应该以字母开头 我尝试过使用表达式^[a-zA-Z][\'\-]?+$,但它不起作用

下面列出了几个可以接受的单词

伦敦不区分大小写 杰克逊的 非营利性 下面列出了几个不可接受的词

12伦敦包含一个数字,而不是以字母表开头 -不以字母表开头 to:contains:character,不允许使用除-and'以外的任何特殊字符 它匹配以字母字符开头,后跟任意数量字母字符的任何单词,-或'

请注意,只要破折号是序列中的第一个或最后一个字符,则当破折号位于时,不需要转义-和

另外请注意,我已经从您的示例中删除了圆括号-如果您不想删除,则可以将其删除以获得更好的性能。

尝试以下方法:

^[A-Za-z]+[A-Za-z'-]*$

首先,在诸如

您正在测试以模式开头和结尾的字符串^means start of line$是结尾,因此省略了两个空格之间包含的所有单词。 您应该使用\b或\b。 您可以使用诸如“\D”等字符类而不是数字来代替查找[a-zA-Z]。 让我知道上述方法是否适用于您的场景

\b\D[^\c][a-zA-Z]+[^\c]  

它说:没有数字的单词边界,没有控制字符,一个或多个字母大小写字符,没有以下控制字符。

让你轻松编辑,@Jim或者至少,我差点让你轻松完成…+1但我想OP需要这个正则表达式来处理文本,而不是单个单词。这个正则表达式在伦敦找不到任何东西。有一个Jackson在非营利部门工作。@Lieven-OP包括^和$,所以我假设OP测试的是一个单词语句,比如密码或类似的语句。需要进行一些修改,但事实并非如此。@Lieven我只想匹配单个单词,而不是文本中的单词,我使用这个正则表达式作为单词验证器@Dexter Yes,我确实是用这个来匹配单个单词谢谢all@Vamsi-更好,但是现在我对如何从文本中提取这些单词的好奇没有得到满足,谢谢你的回复,但我实际上是用这个正则表达式来检查单词是否符合要求的格式,我不是在文本中使用,而是在单个单词上使用,单词之间没有空格。你不想匹配像touché或nave这样的单词吗?
\b\D[^\c][a-zA-Z]+[^\c]