由于自PHP 5.3.0以来不推荐使用POSIX正则表达式(ereg),因此我想知道将旧表达式转换为PCRE(Perl兼容正则表达式)(preg)的简单方法.
每个例子,我有这个正则表达式:
eregi('^hello world');
Run Code Online (Sandbox Code Playgroud)
如何将表达式转换为preg_match兼容表达式?
注意:此帖子用作与从ereg转换为preg相关的所有帖子的占位符,以及相关问题的重复选项.请不要关闭这个问题.
有关:
成像您正在尝试模式匹配"stackoverflow".
您需要以下内容:
this is stackoverflow and it rocks [MATCH]
stackoverflow is the best [MATCH]
i love stackoverflow [MATCH]
typostackoverflow rules [NO MATCH]
i love stackoverflowtypo [NO MATCH]
Run Code Online (Sandbox Code Playgroud)
我知道如果解析stackoverflow如果它在两个站点上都有空格使用:
/\s(stackoverflow)\s/
Run Code Online (Sandbox Code Playgroud)
如果它在字符串的开头或结尾处是相同的:
/^(stackoverflow)\s/
/\s(stackoverflow)$/
Run Code Online (Sandbox Code Playgroud)
但是如何指定"空格或字符串结尾"和"空格或字符串的开头"?
我在使用正则表达式方面遇到了一些麻烦.
这是我的代码
$pattern = "^([0-9]+)$";
if (preg_match($pattern, $input))
echo "yes";
else
echo "nope";
Run Code Online (Sandbox Code Playgroud)
我跑了然后得到:
警告:preg_match()[function.preg-match]:找不到结尾分隔符'^'
这是我正在尝试使用的正则表达式:
/^(\w|\.|-)+?@(\w|-)+?\.\w{2,4}($|\.\w{2,4})$/gim
Run Code Online (Sandbox Code Playgroud)
我在这个网站上找到了它,当我在那里试用它时效果很好.但是只要我把它放在我的代码中,我就会得到这样的信息:
Warning: preg_match() [function.preg-match]: Unknown modifier 'g' in C:\xampp\htdocs\swebook\includes\classes.php on line 22
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释什么是错的,为什么它在该网站上工作而不是在我的代码中?
我有这个代码:
$string1 = "My name is 'Kate' and im fine";
$pattern = "My name is '(.*)' and im fine";
preg_match($pattern , $string1, $matches);
echo $matches[1];
Run Code Online (Sandbox Code Playgroud)
当我运行它时会返回此错误:
警告:preg_match()[function.preg-match]:分隔符不能是字母数字或反斜杠
我需要创建一个匹配整数的表达式,后跟"秒"或"分钟"
我试过这个表达式: ([0-9]+)\s+(\bseconds\b)|(\bminutes\b)
它工作正常几秒钟,但不是几分钟.
例如"5秒"给出5秒; 而"5分钟"给出;;分钟
我该怎么做才能分开这个词:
oneTwoThreeFour
Run Code Online (Sandbox Code Playgroud)
到一个数组,以便我可以得到:
one Two Three Four
Run Code Online (Sandbox Code Playgroud)
用preg_match?
我厌倦了这个,但它只是完整的说法
$words = preg_match("/[a-zA-Z]*(?:[a-z][a-zA-Z]*[A-Z]|[A-Z][a-zA-Z]*[a-z])[a-zA-Z]*\b/", $string, $matches)`;
Run Code Online (Sandbox Code Playgroud) 如何使用preg_match搜索数组?
例:
<?php
if( preg_match( '/(my\n+string\n+)/i' , array( 'file' , 'my string => name', 'this') , $match) )
{
//Excelent!!
$items[] = $match[1];
} else {
//Ups! not found!
}
?>
Run Code Online (Sandbox Code Playgroud) 我是正则表达式的新手,我想使用preg_match函数来查找字符串是否是IP地址.
例如if $string = "45.56.78.222"或类似的东西,preg_match($regex, $string)应该返回true.那$regex应该是什么?