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