Regex to match first word in sentence

2020-05-27 03:38发布

I am looking for a regex that matches first word in a sentence excluding punctuation and white space. For example: "This" in "This is a sentence." and "First" in "First, I would like to say \"Hello!\""

This doesn't work:

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

5条回答
甜甜的少女心
2楼-- · 2020-05-27 04:10
[a-z]+

This should be enough as it will get the first a-z characters (assuming case-insensitive).

In case it doesn't work, you could try [a-z]+\b, or even ^[a-z]\b, but the last one assumes that the string starts with the word.

查看更多
男人必须洒脱
3楼-- · 2020-05-27 04:23
(?:^|(?:[.!?]\s))(\w+)

Will match the first word in every sentence.

http://rubular.com/r/rJtPbvUEwx

查看更多
时光不老,我们不散
4楼-- · 2020-05-27 04:30

This is an old thread but people might need this like I did. None of the above works if your sentence starts with one or more spaces. I did this to get the first (non empty) word in the sentence :

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

Explanation:

(?<=^[\s"']*) positive lookbehind in order to look for the start of the string, followed by zero or more spaces or punctuation characters (you can add more between the brackets), but do not include it in the match.
(\w+) the actual match of the word, which will be returned

The following words in the sentence are not matched as they do not satisfy the lookbehind.

查看更多
一夜七次
5楼-- · 2020-05-27 04:31

You can use this regex: ^\s*([a-zA-Z0-9]+).

The first word can be found at a captured group.

查看更多
淡お忘
6楼-- · 2020-05-27 04:33

You can use this regex: ^[^\s]+ or ^[^ ]+.

查看更多
登录 后发表回答