草庐IT

php - 正则表达式 - 在特定字符的每个实例之后获取所有字符

我是正则表达式的新手,只是不知道如何编写一个模式来匹配我的需要。任何帮助都会很棒!我想使用PHP和正则表达式来捕获字符串中特定唯一字符(定界符)之后的每组字符,以及该定界符第一个实例之前的任何字符集。然后我想将所需的输出“匹配”到PHP数组中。示例分隔符:>示例字符串:$str='word1>word-2>word.3>word*4';我想要的匹配:array([0]=>'word1',[1]=>'word-2',[2]=>'word.3',[3]=>'word*4',);我查看了以下回复,虽然它们很接近,但并不能完全帮助我实现我的需要:getallcharactersafter","

php - 正则表达式:捕获成对的花括号

我想捕获匹配的大括号。例如:Someexampletextwith\added[author]{textwithcurlybraces{sometext}..}Someexampletextwith\added[author]{textwithoutcurlybraces}Someexampletextwith\added[author]{textwith{}and{}and{}curlybraces{sometext}..}Someexampletextwith\added[author]{textwith{}and{}and{}curlybraces{sometext}..}and

php - 为什么\b 对于某些语言不能正常工作?

这是我的代码:(它适用于英语)$str1="ittisatestt";$str2="itisatestt";$str3="ittisatest";$str4="itisatest";echopreg_match("[\b(?:it|test)\b]",$str1)?1:2;//output:2(donotmatch)$str2//output:1(itmatches)$str3//output:1(itmatches)$str4//output:1(itmatches)但我不知道为什么,上面的REGEX对于波斯语不能正常工作:(它总是返回1)$str1="دیوار";$str2="د

php - 转义撇号的正则表达式条件匹配

$str="'ei-1395529080',0,0,1,1,'Name','email@domain.com','Sentencewith\'escapedapostrophes\',which\'should\'beononeline!','no','','','yes','6.50',NULL";preg_match_all("/(')?(.*?)(?(1)(?!\\\\)'),/s",$str.',',$values);print_r($values);我正在尝试编写具有这些目标的正则表达式:返回,分隔值的数组(注意我在第2行附加到$str)如果数组项以'开头,匹配结尾的'但是,

php - preg_replace() 替换太多

我正在开发一个简单的SQL调试器,它将接受参数化变量并尝试相应地替换它们,这样如果一条SQL有问题,那么我可以将它直接复制并粘贴到我的RDBMS中以处理查询,并希望如此更快地调试问题。到目前为止,我基本上已经有了这个,但是它替换了太多:导致select*fromtable_namewherecommentlike'%thatisanice'monkeyzeus@example.com'butthisone%'andemail='monkeyzeus@example.com'andstatus='active'请注意,位置1的'monkeyzeus@example.com'正在从位置0进

php - 从头开始匹配字符串的一部分

我有一个日期(例如yyyy-mm-ddhh:mm:ss),如果我们有一个字符串完全匹配或部分匹配该模式,我希望能够从头开始返回true结束。例如。44会匹配模式,因为44会匹配yy但-12不会匹配,因为-不是一个有效的“y”字符。我想到了一些不雅的解决方案。我可以对这样的东西进行preg_match:#^\d(\d(\d(\d(-)?)?)?)?$#这只是根据年份执行部分匹配。它需要扩展以说明月、日、小时、分钟等,但这应该表明想法#1。我也可以做类似...$patterns=['','\d','\d\d','\d\d\d','\d\d\d\d','\d\d\d\d-',...];iss

php - Slim 3 - 斜杠作为路由参数的一部分

我需要使用可以包含斜杠/的参数组成URL。例如,经典的/hello/{username}路由。默认情况下,/hello/Fabien将匹配此路由,但不会匹配/hello/Fabien/Kris。我想问你如何在Slim3框架中做到这一点。 最佳答案 Routeplaceholders:For“Unlimited”optionalparameters,youcandothis:$app->get('/hello[/{params:.*}]',function($request,$response,$args){$params=explo

PHP Regex 将重复字符减少为单个实例

我想删除文本中重复的感叹号(!!!)、问号(??)或句号(....),并将它们替换为它们自身的单个实例。所以我基本上需要“一个preg_replace来统治它们”。我目前正在执行三种不同的模式:preg_replace("/[!]{2,}/","!",$str);preg_replace("/[?]{2,}/","?",$str);preg_replace("/[.]{2,}/",".",$str);有没有一种方法可以仅使用一个正则表达式模式将找到的字符替换为其自身的单个实例?我需要转:Ok!!!Really????Iguess.....进入:Ok!Really?Iguess.使用一个

php - 正则表达式匹配字符串的一部分

我有这种类型的字符串:aabbcc-12-00001-g001-1024.pngddeeffgg-1-50001-i001-500.jpgddeeffgg-1-50001-i001.jpg我想提取没有大小的文件名,它始终是文件扩展名之前的-xxx或-xxxx。例如,对于三个字符串,我想匹配:aabbcc-12-00001-g001.pngddeeffgg-1-50001-i001.jpgddeeffgg-1-50001-i001.jpg我的想法是先调整大小,然后将preg_replace与PHP一起使用,但不确定如何只匹配大小,尝试使用:-\d{3,4}\.[a-z]{3}但这是匹配-

php - 用于匹配名称和可选值的正则表达式

我有一个PHP应用程序,它与支付处理器接口(interface)以处理信用卡。有时,处理器的后响应失败(例如矩阵中的暂时故障),我们没有收到付款的自动通知。在这些情况下,我们会回退到从始终发送的确认电子邮件中输入数据。我希望我的代码解析出电子邮件的文本以获取数据,这似乎是preg_match_all的完美用例。问题是电子邮件的格式不正确:它以name:value对出现,但它们都在一行上,而且通常值是空白,这让我很困惑。我非常擅长正则表达式基础知识(量词、分组、字符类、anchor、修饰符),但我真的没有前瞻和反向引用的经验,而且它们是否能提供帮助对我来说一点也不明显。示例数据可能看起来