PHP preg_match介于字符串之间

Kev*_*ing 15 php regex preg-match

我正在尝试获取字符串hello world.

这是我到目前为止所得到的:

$file = "1232#hello world#";

preg_match("#1232\#(.*)\##", $file, $match)
Run Code Online (Sandbox Code Playgroud)

Mic*_*ski 21

除了#你的字符串包含之外#,建议使用分隔符,并且之前使用非贪婪(.*?)来捕获字符#.顺便说一句,#如果它不是分隔符,则不需要在表达式中进行转义.

$file = "1232#hello world#";
preg_match('/1232#(.*?)#/', $file, $match);

var_dump($match);
// Prints:
array(2) {
  [0]=>
  string(17) "1232#hello world#"
  [1]=>
  string(11) "hello world"
}
Run Code Online (Sandbox Code Playgroud)

更好的是使用[^#]+(或*代替+字符可能不存在)来匹配所有字符直到下一个#.

preg_match('/1232#([^#]+)#/', $file, $match);
Run Code Online (Sandbox Code Playgroud)


Ωme*_*ega 11

使用外观:

preg_match("/(?<=#).*?(?=#)/", $file, $match)
Run Code Online (Sandbox Code Playgroud)

演示:

preg_match("/(?<=#).*?(?=#)/", "1232#hello world#", $match);
print_r($match)
Run Code Online (Sandbox Code Playgroud)

输出:

Array
(
    [0] => hello world
)
Run Code Online (Sandbox Code Playgroud)

在这里测试一下.