在php中获取两个特定字符之间的单词

时间:2014-07-31 15:33:43

标签: php regex

如何获取字符“ - #”和“# - ”之间的单词 我尝试了正则表达式并且爆炸但是我无法获得所需的输出。

输出必须是: 第2节第3节第4节第5节 .................................................. ...............................

- #Section 2# - - ## Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt ## -

- #Section 3# - - ## Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt ## -

- #Section 4# - - ## Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt ## -

- #Section 5# - - ## Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt ## -

4 个答案:

答案 0 :(得分:4)

由于问题的标题明确指出:

  

获取php ....

中两个特定字符之间的字词

您可以使用此正则表达式:

preg_match_all('/--#(.*?)#--/', $text, $matches);
print_r($matches[1]);

<强>解释

--#      # match '--#'
(        # group and capture to \1:
  .*?    #   any character except \n (0 or more times)
)        # end of \1
#--      # match '#--'

Working Demo

答案 1 :(得分:0)

通过sed,

$ sed 's/.*--#\(.*\)#--.*/\1/g' file
Section 2

Section 3

Section 4

Section 5

答案 2 :(得分:0)

你可以尝试这个:

--#(.*)#--

DEMO

答案 3 :(得分:0)

如果您使用BASH

不使用sed或任何其他命令的简单答案是通过执行以下操作

 VAR="--#Section 2#-- -##Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt##-"

 #delete from the tail 
 VAR=${VAR%%'#--'*}                             //you will get VAR="--#Section 2"
 #delete from the head
 VAR=${VAR##*'--#'}                             //NOW you'll have VAR="Section 2"