正则表达式匹配句子中的第一个单词

时间:2013-02-08 06:38:56

标签: regex text-segmentation

我正在寻找一个匹配句子中第一个单词的正则表达式,不包括标点符号和空格。例如:“这是一个句子”中的“此”。和“第一次”在“首先,我想说”“你好!\”“

这不起作用:

"""([A-Z].*?(?=^[A-Za-z]))""".r

5 个答案:

答案 0 :(得分:9)

(?:^|(?:[.!?]\s))(\w+)

将匹配每个句子中的第一个单词。

http://rubular.com/r/rJtPbvUEwx

答案 1 :(得分:2)

[a-z]+

这应该足够了,因为它会得到第一个a-z字符(假设不区分大小写)。

如果它不起作用,您可以尝试[a-z]+\b,甚至^[a-z]\b,但最后一个假设字符串以单词开头。

答案 2 :(得分:2)

您可以使用此正则表达式:^[^\s]+^[^ ]+

答案 3 :(得分:1)

您可以使用此正则表达式:^\s*([a-zA-Z0-9]+)

可以在捕获的组中找到第一个单词。

答案 4 :(得分:1)

这是一个老线程,但人们可能需要像我一样。 如果您的句子以一个或多个空格开头,则上述任何一个都无效。 我这样做是为了得到句子中的第一个(非空)单词:

(?<=^[\s"']*)(\w+)

说明:

为了查找字符串的开头,后面跟着零个或多个空格或标点字符(你可以在括号之间添加更多),

(?<=^[\s"']*)正向后观,但不要在匹配中包含它。登记/> (\w+)单词的实际匹配,将返回

句子中的以下单词不匹配,因为它们不满足后视。