PHP正则表达式-查找两个连续的单词,它们之间有未知数量的空格

PHP正则表达式-查找两个连续的单词,它们之间有未知数量的空格,php,regex,Php,Regex,我正在尝试创建一个PHP正则表达式,如果两个单词相邻出现,并且它们之间有任意数量的空格,则该正则表达式将匹配 例如,匹配“DanielBaylis”(在“Daniel”和“Baylis”之间有3个空格)。我试过这个,但似乎不起作用: "/DANIEL[ ]{1,5}BAYLIS/" (this was to check up to 5 spaces which the most I expect in the data) 及 我需要从更大的文本体中提取名称,并且名称可以出现在该文本中的任何位置

我正在尝试创建一个PHP正则表达式,如果两个单词相邻出现,并且它们之间有任意数量的空格,则该正则表达式将匹配

例如,匹配“DanielBaylis”(在“Daniel”和“Baylis”之间有3个空格)。我试过这个,但似乎不起作用:

"/DANIEL[ ]{1,5}BAYLIS/" (this was to check up to 5 spaces which the most I expect in the data)

我需要从更大的文本体中提取名称,并且名称可以出现在该文本中的任何位置。用户输入错误是创建多个空间的原因


谢谢大家丹

/DANIEL[]+BAYLIS/
应该做
+
将对前一个字符(-class)的一个或多个出现进行全局化,在本例中,是一个空白字符


此外,假设您希望不考虑大小写进行匹配,则需要将正则表达式调整为不区分大小写,我不确定如何在PHP中实现这一点(这取决于您使用的正则表达式的风格…自从我上次接触它以来很久了…

/DANIEL[]+BAYLIS/
应该做到这一点
+
将对前一个字符(-class)的一个或多个出现进行全局化,在本例中,是一个空白字符



此外,假设您希望不考虑大小写而进行匹配,则需要将正则表达式调整为不区分大小写,我不确定如何在PHP中执行此操作(这取决于您使用的正则表达式的风格…我上次接触它很久了…

您也可以先替换过时的空格,然后再进行匹配,哪个应该更容易;)
DANIEL[]{1,5}BAYLIS
这看起来不错,为什么不起作用?@Kent我猜问题出在case身上……;)我实际上在脚本中使用了/DANIEL[]{1,5}BAYLIS/I,虽然我没有在示例中发布,但它没有得到匹配@肯特-你认为这也应该起作用吗?我用
grep-i
进行了测试,它起作用了。我尝试的是'echo“Daniel BAYLIS”| grep-iP“Daniel[]{1,5}BAYLIS”`您也可以先替换过时的空格,然后再匹配它,这应该更容易;)
DANIEL[]{1,5}BAYLIS
这看起来不错,为什么不起作用?@Kent我猜问题出在case身上……;)我实际上在脚本中使用了/DANIEL[]{1,5}BAYLIS/I,虽然我没有在示例中发布,但它没有得到匹配@肯特-你认为这也应该起作用吗?我用
grep-i
进行了测试,它起作用了。我尝试的是'echo“Daniel BAYLIS”| grep-iP“Daniel[]{1,5}BAYLIS”`这将是
/i
修饰符。在这里使用单词边界也是个好主意,当然括号是不必要的
/\bDANIEL+BAYLIS\b/i
应该可以。@TimPietzcker我在想
/i
,但是从我的头顶上看,PHP中有一个
pregi\ucode>-命名空间的方法集,它可以有效地处理不区分大小写的正则表达式,而不必添加
/i
。。。但正如我所说,已经很久了。。。括号只是为了清楚起见才放在这里。单词边界确实很好,但问题陈述并不需要它们(根据我的理解:)我只是在preg_replace函数中使用了/I修饰符值得注意的是使用
\s
来匹配任何形式的空白(制表符、空格、不间断空格、换行符等)。也许有用。另外,作为参考,
+
的工作原理与
{1,}
(一个或多个,无上限)相同,
*
的工作原理与
{0,}
(零个或多个,无上限)相同。这就是
/i
修饰符。在这里使用单词边界也是个好主意,当然括号是不必要的
/\bDANIEL+BAYLIS\b/i
应该可以。@TimPietzcker我在想
/i
,但是从我的头顶上看,PHP中有一个
pregi\ucode>-命名空间的方法集,它可以有效地处理不区分大小写的正则表达式,而不必添加
/i
。。。但正如我所说,已经很久了。。。括号只是为了清楚起见才放在这里。单词边界确实很好,但问题陈述并不需要它们(根据我的理解:)我只是在preg_replace函数中使用了/I修饰符值得注意的是使用
\s
来匹配任何形式的空白(制表符、空格、不间断空格、换行符等)。也许有用。此外,作为参考,
+
的工作原理与
{1,}
(一个或多个,无上限)相同,
*
的工作原理与
{0,}
(零个或多个,无上限)相同。
"/DANIEL[ ]{*}BAYLIS/"