Php 正则表达式,用于将无字符串与多个连字符匹配

Php 正则表达式,用于将无字符串与多个连字符匹配,php,regex,Php,Regex,嗨,我需要匹配一个字符串,该字符串之间可以有0+连字符。我正在使用PHP preg match来实现这一点。字符可以是大写或小写。这里有几个例子: TESTTESTtest published successfully test-TEST-test published successfully Test-test published successfully 我的正则表达式需要捕获所有这些不同的情况 我正在逐行检查日志,并尝试将下面的正则表达式与每行匹配 这是我当前的if语句: if(preg

嗨,我需要匹配一个字符串,该字符串之间可以有0+连字符。我正在使用PHP preg match来实现这一点。字符可以是大写或小写。这里有几个例子:

TESTTESTtest published successfully
test-TEST-test published successfully
Test-test published successfully
我的正则表达式需要捕获所有这些不同的情况

我正在逐行检查日志,并尝试将下面的正则表达式与每行匹配

这是我当前的if语句:

if(preg_match('/(\w*) published successfully/',$line,$matches){

}

我只是使用了\w*作为我的角色捕获,因为我以前不需要担心连字符,但我需要调整它以处理新的场景。有人能帮我吗?

如果您不需要担心像
----成功发布
这样的边缘情况,那么您只需将
\w
-
添加到字符类中
[…]
(我还建议使用
+
量词匹配1个或多个匹配项,而不是0个或更多,以避免得到空匹配项):


请参阅。

您能解释一下您正在做什么以及为什么
expode(“-”,$s)
不起作用吗?您好,我已经在我的初始问题中添加了额外的信息,不确定在这个例子中如何使用explode,但我以前可能没有提供足够的信息。很好,您没有想到字符类吗?比如
[\w-]*
?你是否需要担心像
----成功发布这样的案例?
?哇,这非常有效。谢谢你,我对regex不太了解。我正在使用其他人的代码,所以我正在努力适应它,我尝试了类似([\w-*])的方法它不起作用,但我显然打错了。非常感谢,我不需要担心你提到的边缘案例。你提供的很好。再次感谢!
if(preg_match('/([\w-]+) published successfully/',$line,$matches){

}