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

bqjvbblv  于 2023-01-29  发布在  PHP
关注(0)|答案(3)|浏览(145)

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

kdfy810k

kdfy810k1#

你说得差不多对:

(\S+\s+\S+)

假设您不需要对使用哪些字符进行更强的控制。
如果需要同时匹配两个单词或仅匹配一个单词,可以使用以下方法之一:

(\S+\s+\S|\S+)
(\S+(?:\s+\S+)?)
vhmi4jdf

vhmi4jdf2#

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

mu0hgdu0

mu0hgdu03#

如果你真的只想允许数字和字母,[^\s]就不够严格了。

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

相关问题