13

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

这不起作用:

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

5 回答 5

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

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

http://rubular.com/r/rJtPbvUEwx

于 2013-02-08T06:50:20.927 回答
4

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

于 2017-07-17T06:28:25.417 回答
4

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

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

解释:

(?<=^[\s"']*)正向向后查找以查找字符串的开头,后跟零个或多个空格或标点符号(您可以在括号之间添加更多),但不要将其包含在匹配中。
(\w+)单词的实际匹配,将返回

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

于 2017-12-22T14:34:16.287 回答
3

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

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

于 2013-02-08T06:50:35.497 回答
2
[a-z]+

这应该足够了,因为它将获得第一个 az 字符(假设不区分大小写)。

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

于 2013-02-08T06:40:53.287 回答