2011-01-14 78 views
3

我想捕获一个字符串的子字符串,选择字符的数量,但是如果任何单词被剪切,那么直到最后一个空白。复杂的正则表达式

作为例子,如果是这样的文字:

“这是文字Lorem存有等的例子......”

12个字符会给“这是一封”。在这种情况下,最后一个词被删除,所以结果应该是“这是一个”。

它可能与正则表达式做到这一点?

回答

6
^.{0,11}\w\b 

这将找到12个字符,其中最后一个是其次是一个字一个字的字符\w打破\b。单词中断是一个零长度的断言,可以匹配单词的开头或结尾。

结果:\w\b确保匹配的最后一个字符是单词的最后一个字符,因此您不会收到部分单词。

+0

简直太棒了。非常感谢。 – Jose3d 2011-01-14 21:05:51

1

替代@ JohnKugelman是:

^([\w\s]{0,12})\s 

匹配单词的开头,查找单词和空格(最多12个字符)。或者你可以使用:

^([\w\s]{1,12})\b 

哪个不相同,但比赛直到下一个非字字符(空格,标点符号等)

(仅仅只是另一种方法)

+0

非常感谢布拉德。 – Jose3d 2011-01-14 21:06:09