复杂的正则表达式

时间:2011-01-14 20:40:19

标签: regex

我想捕获一个字符串的子字符串,选择字符数,但如果任何单词被剪切,则直到最后一个空白。

例如,如果这是文本:

“这是文本lorem ipsum等的一个例子......”

12个字符会给出“这是一个e”。在这种情况下,最后一个单词被剪切,因此结果应该是“这是一个”。

使用正则表达式可以做到这一点吗?

2 个答案:

答案 0 :(得分:6)

^.{0,11}\w\b

这将找到12个字符,其中最后一个是单词字符\w,后跟单词分隔\b。单词断点是一个零长度断言,它匹配单词的开头或结尾。

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

答案 1 :(得分:1)

@ JohnKugelman的替代选择:

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

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

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

哪个相同,但匹配到下一个非单词字符(空格,标点符号等)

(只显示另一种方法)