C#Regex:只有字母后跟可选项

时间:2011-01-04 21:41:59

标签: c# regex .net-4.0

我正在寻找一种从句子中获取单词的方法。我对以下表达式非常了解:

\b([a-zA-Z]+?)\b

但是有些事情会在我不想要的时候计算出一个单词。例如,一个单词后跟多个句点,如“text ..”。因此,在我的正则表达式中,我希望将句点设置为零或一次的结尾。插入\.?并不能解决问题,而且这方面的变化也没有产生任何结果。

希望有人可以提供帮助!

3 个答案:

答案 0 :(得分:1)

单个点表示任何字符。您必须将其作为

进行转义
\.?

也许你想要一个这样的表达式:

\w+\.?

\p{L}+\.?

答案 1 :(得分:0)

您需要添加\.?(而不是.?),因为该句号在正则表达式中具有特殊含义。

答案 2 :(得分:0)

为了避免匹配您的示例“test ..”,您要求的不仅需要将\.?用于检查单词之后的第一个字符是否为点,而且还要查看一个字符以检查这个词之后的第二个字符。

我最终得到了类似的东西 \w{2,}\.?[^.]

您还应该考虑一个句子并不总是以.结尾,而是!?等。

我通常使用rubulator.com来快速测试正则表达式