pcre正则表达式匹配前两个单词,数字

时间:2012-10-12 21:08:25

标签: php regex string pcre

我需要一个正则表达式来匹配字符串中的前两个单词(它们可能包含字母,数字,逗号和其他标点符号,但不包含空格,制表符或换行符)。 我的解决方案是([^\s]+\s+){2},但如果匹配的内容如下:'123 word' * in'123 word,hello'*,它不会对只有两个单词且后面没有空格的字符串起作用

此任务的正确正则表达式是什么?

3 个答案:

答案 0 :(得分:3)

你几乎是对的:

([^\s]+\s+[^\s]+)

假设您不需要更强控制使用哪些字符。

如果您需要匹配两个单词或仅匹配一个单词,您可以使用其中一个:

([^\s]+\s+[^\s]+|[^\s]+)
([^\s]+(?:\s+[^\s]+)?)

答案 1 :(得分:2)

您可以使用preg_split()在空格上拆分字符串,而不是尝试匹配单词。

答案 2 :(得分:0)

如果你真的只想允许数字和字母[^\s]不够限制。使用此:

/[a-z0-9]+(\s+[a-z0-9]+)?/i