douwen0647 2015-11-12 01:46
浏览 44
已采纳

匹配两个单词之间的所有内容,而匹配的最后一个单词是可选的

I need to capture everything between 'one' and 'four', the 'four' being optional. We don't know what's between 'one' and 'four'. I tried matching it, but not getting the right result. What am I doing wrong?

$text = "one two three four five six seven eight nine ten";
preg_match("~one( .+)(four)?~i", $text, $match);

print_r($match);

Result:

Array ( [0] => one two three four five six seven eight nine ten [1] => two three four five six seven eight nine ten )

Need Result:

Array ( [0] => one two three four five six seven eight nine ten [1] => two three [3] => four)

PS: Yes, the 'four' needs to be optional.

  • 写回答

2条回答 默认 最新

  • duangan7834 2015-11-12 02:00
    关注

    Here you need to use alternation operator.

    one(( .+)(four).*|.*)
    

    DEMO

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持