草庐IT

lambda表达式

全部标签

php - 使用 PHP 正则表达式删除独立数字

如何使用正则表达式在PHP中删除字符串中的独立数字?例子:"hi123"不应被修改。"hi123"应转换为"hi"。 最佳答案 使用模式\b\d+\b其中\b匹配单词边界。以下是一些测试:$tests=array('hi123','123hi','hi123','123');foreach($testsas$test){preg_match('@\b\d+\b@',$test,$match);echosprintf('"%s"->%s'."\n",$test,isset($match[0])?$match[0]:'(nomatch)

php - 正则表达式以匹配混合的阿拉伯语和数字

returnpreg_match('/^(\d*\p{Arabic}+*)$/iu',$str);我正在使用上面的函数来匹配字符串,例如:-“somewordinArabic”-“3somewordinArabic”等但我希望它也匹配以下情况:-“3somewordin444Arabic”-“somethingarabic22”所以基本上混合了阿拉伯语和数字,但至少有一个字母是阿拉伯语,有人可以帮助我吗? 最佳答案 /^[\d\p{Arabic}]*\p{Arabic}[\d\p{Arabic}]*$/ui

php - 正则表达式在字符串的特定位置添加连字符

我发现如果提供的字符串中没有字母表,这个正则表达式可以正常工作。$string="12522191813381147500333332228323";echo$formattedString=preg_replace("/^(\d{8})(\d{4})(\d{4})(\d{4})(\d{12})$/","$1-$2-$3-$4-$5",$string);我的输入字符串有时会混合字母和数字。我必须做哪些改变才能使其在这两种情况下都能正常工作。我还有其他替代方法可以使用PHP的字符串函数迭代字符串并添加破折号,但我想了解如何使用正则表达式来实现它。 最佳答案

php - 具有指数运行时间的 PCRE 正则表达式

在某些情况下,使用递归回溯的正则表达式实现可能会呈现指数级运行时间。我正试图为PCRE引擎找到这样一个病态的正则表达式。我已经尝试了几个正则表达式,这些正则表达式对于Perl正则表达式来说是指数级的(例如thisone),但是在我的测试中它们都没有表现出与PCRE的指数级运行时间。 最佳答案 在您的测试中,是否所有的正则表达式都预计会失败?当他们确实失败时,您是否找到了确切原因?可能匹配失败因为正则表达式引擎检测到过多的回溯。我不知道这种情况是否会发生,但请尝试使用应该会成功的正则表达式,例如:(?i)lorem(?:.|\s)*p

php - 正则表达式删除外括号

我一直在使用此/\(\s*([^)]+?)\s*\)/正则表达式通过PHPpreg_replace函数删除外括号(阅读我之前的更多内容问题Regextomatchanycharacterexcepttrailingspaces)。当只有一对括号时这工作正常,但问题是当有更多时,例如(test1t3()test2)变成test1t3(test2)而不是test1t3()test2。我知道正则表达式的限制,但如果我能让它不匹配任何东西,如果有超过一对括号,那就太好了。因此,示例行为就足够了:(测试1测试2)=>测试1测试2(test1t3()test2)=>(test1t3()test2)

php - 使用正则表达式将内容中的链接替换为超链接

我有一个包含用户博客内容的字符串。如果它们包括以下内容:www.google.comhttp://google.comhttp://www.google.com在他们的博文中,我希望PHP将这些事件替换为真正的超链接,但保留原始子字符串(即不将www.google.com更改为http://www.google.com).有谁知道我如何使用PHP和正则表达式来做到这一点?我试过这个:echopreg_replace('/((www|http:\/\/)[^]+)/','$1',$content);但这只有在链接以空格结尾时才会成功。如果以逗号或句号结尾则失败。

PHP:使用正则表达式在语句中查找语句

目前我有以下情况:我正在尝试“解析”文本,寻找占位符(它们的表示法是“{...}”),稍后,我将用实际文本替换它们。我想到了正则表达式$foo="HelloWorld{foo{bar}}WorldHello!";$bar=array();preg_match_all('@\{.+\}@U',$foo,$bar);var_dump($bar);但这会返回array(1){[0]=>array(1){[0]=>string(9)"{foo{bar}"}}让它变得贪婪会导致:array(1){[0]=>array(1){[0]=>string(10)"{foo{bar}}"}}但我希望结果是

php - 正则表达式帮助 : how to match only either pattern in a regex that contains "or" operator?

我正在使用php的preg_replace().基本上我有2种可能的字符串匹配:你好现实世界问候这是我希望完成的:HelloRealWorldGreetings规则解释:如果字符串包含空格,插入在第一个空格字符之后。如果字符串不包含空格(一个单词),则插入就在字符串的中间(+/-如果奇数字符计数)。到目前为止,我已经想出了一个长期有效的解决方案:",$str,1):preg_replace("/.{".round(strlen($str)/2)."}/","$0",$str,1);?>但是,我相信它可以通过一个更短、更优雅的正则表达式来完成,只有一个preg_replace()。打电话

php - 通过三元表达式设置不为空的值

我有一个非常简短的问题要问你:我从Excel工作表中读取数据并想将其转换为关联数组。但有时某些单元格中没有给出任何值。因此,如果发生这种情况,我想将数组的值设置为0。现在我用三元运算符来做这件事,我很高兴我今天发现了这一点:(isset($excel->sheet[0]['cells'][$row][$value])?$excel->sheet[0]['cells'][$row][$value]:0)在这种情况下是否有缩短重复的方法?它有效,但不是那么漂亮:( 最佳答案 虽然不推荐这样做,但我会采用以下方式(PHP5.3):(@$e

php - 正则表达式/通配符替换字符串 PHP

我有大量文本被加载到标题中,其中包含此链接。我想用一个新值替换它,但是href会根据页面发生变化,这意味着简单的str_replace是不可能的。我看过使用preg_replace,但无法理解这个看似简单的问题。$regex='/(^$)/';$match=preg_match_all($regex,$content,$matches);var_dump($matches);//开始和结束表达式?()表示必须匹配才能返回字符串的单独“表达式”?以下列字符串开头的结果的^过滤器?以下列字符串结尾的结果的$过滤器?所以我正在寻找以开头的字符串并以/>结尾我已经展示了我要执行的步骤,以及我的