【发布时间】:2011-03-27 20:34:11
【问题描述】:
我想要一个正则表达式来匹配由两个或多个空格字符分隔的单词,例如
ABC DE FGHIJ KLM NO P QRST
注意字母之间有两个或多个空格。为此类问题编写正则表达式很容易,因为我只需要前 4 个单词,因为我们可以使用 \S+ 或 \S+? 搜索单词
但是,对于我的问题,一个单词中只能出现 1 个空格,例如
AB C DE FG HIJ KLM NO P QRST
这里 AB C 是一个词,而 FG HIJ 也是一个词。简而言之,我们想要隔离由两个或多个空格分隔的字符,我尝试使用这个正则表达式,
.+? +.+? +.+? +.+? +
它匹配得非常快,但是它不匹配的字符串花费了太多时间。 (这里以4个匹配为例,实际需要匹配更多)。
我需要一个更好的正则表达式来实现这一点,这样就可以避免所有的回溯。 [^ ]* 是一个正则表达式,它将匹配直到遇到空格。难道我们不能指定一个否定字符集,在出现单个空格的情况下继续匹配并在遇到 2 时中断?我尝试过使用积极的前瞻,但失败了。
非常感谢您的帮助。提前致谢。
萨德
【问题讨论】:
-
听起来你不需要正则表达式,只需要根据分隔符
" "拆分字符串。 ( -
我需要在开发/编译的系统中指定正则表达式,它只接受一个正则表达式字符串,它不允许任何编码或拆分。
标签: regex