正则表达式匹配空格之间的单词

时间:2009-11-09 13:23:58

标签: c# regex

我需要一个与以下内容匹配的正则表达式(括号表示我想匹配此部分,它们不在匹配的实际字符串中!):

More Words:
    6818 [some words]       641 [even more words]

我尝试了以下内容:

(?<=[0-9]+\s)[a-z\s]+(?!\s{2,})

用文字说出来; “匹配所有单词,包括它们之间的空格,它们在一个或多个数字后面和一个或多个空格之前出现一个空格”,但它会选择所有空格以及它有时会删除一个单词的最后一个字母(wtf?)

3 个答案:

答案 0 :(得分:2)

(?<=[0-9]+\s)([a-z]+\s)*[a-z]+(?!\s{2,})

@Bart:我删除了括号。

说明:这将选择所有单词后跟一个空格(如果存在)加上最后一个单词后跟空格(这是必须的)

答案 1 :(得分:2)

这对我有用

[0-9]+\s([a-z \s]+)\s\s

答案 2 :(得分:-1)

(?<=\d\s)([a-zA-Z]+\s)*[a-zA-Z]+

这个就行了!不要问我是怎么来的,只是模糊不清......但是,你是一个很好的帮助:)

澄清这个正则表达式,简短解释:

1: (                open group 1
2:  ?<=\d\s         look, if a digit followed by a whitespace are before group 2
3: )                close group 1
4: (                open group 2
5:  [a-zA-Z]+\s     match any words / letters that are followed by a whitespace
6: )*               close group 2 and let it repeat or not even be there
7: [a-zA-Z]+        match any words / letters and let them repeat one or more times

长话短说,正则表达式不会尝试匹配空格数量之间的单词,但匹配数字/空格和单词/字母之间的任何内容:)