加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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]));

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读