php – 正则表达式匹配单词组和以前匹配的单词组的部分
发布时间:2020-12-13 22:49:55 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试从一段文字中匹配单词组.基本上我希望每个单词有4个或更多个字符,每组2个单词,其中第一个单词是4个或更多,第二个单词是3个或更多个字符,每组3个单词,第一个单词有4个或更多字符,第二个和第三个有3个或更多字符. 我的问题是,我为这个只返回创建一个
我正在尝试从一段文字中匹配单词组.基本上我希望每个单词有4个或更多个字符,每组2个单词,其中第一个单词是4个或更多,第二个单词是3个或更多个字符,每组3个单词,第一个单词有4个或更多字符,第二个和第三个有3个或更多字符.
我的问题是,我为这个只返回创建一个正则表达式的尝试仅匹配一次我希望获得所有匹配的文本的给定部分. 例如,当我有这个文本时: 它应该返回一个包含以下值的数组: This example text explain problem having with regular expression example text explain the having with with the regular expression explain the problem having with the with the regular 我已经尝试了单个和单独的正则表达式,但问题仍然是它只会匹配字符串的一部分一次.在示例中,如果我尝试以下正则表达式: /b(w{4,}sw{3,})b/ 它应该匹配 having with the with the regular 我也试过了 /b(?<triple>(?<double>(?<single>w{4,})(sw{3,})?)(sw{3,})?)b/ 哪个也只匹配 This example explain having regular example text explain the having with regular expression explain the problem having with the 谁有更好的想法如何解决这个问题? 解决方法
问题是你想要捕捉重叠的模式(比如“with with”和“with the”).你可以用一点点前瞻来做到这一点.我还没有设法用这种方法组合成一个正则表达式,但你可以这样做:
$text = 'This is an example text to explain the problem I am having with the regular expression'; preg_match_all('/b(w{4,})b/',$text,$matches1); preg_match_all('/b(?=(w{4,}s+w{3,}))b/',$matches2); preg_match_all('/b(?=(w{4,$matches3); var_dump(array_merge($matches1[1],$matches2[1],$matches3[1])); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |