<?php
$url = '/#123_abc" data-text="something-something"';
preg_match_all ('(/#.*)', $url, $result);
var_dump($result);
我怎样才能获得/#123_abc
?我想排除data-text="something-something"
答案 0 :(得分:2)
您可以使用否定字符类
/(^\/#[^"]+)/
^
在开始时锚定正则表达式
[^"]+
否定字符类,匹配"
以外的任何其他字符。
+
量化模式,匹配一个或多个出现。
<强>测试强>
$url = '/#123_abc" data-text="something-something"';
preg_match_all ('/(^\/#[^"]+)/', $url, $result);
var_dump($result[0]);
// => Outputs
// /#123_abc
<小时/> P.S:您可以通过使用不同的分隔符对来阻止
\
的转义
$url = '/#123_abc" data-text="something-something"';
preg_match_all ('~(^/#[^"]+)~', $url, $result);
var_dump($result[0]);
// => Outputs
// /#123_abc
答案 1 :(得分:2)
*
是一个贪心运算符,它尽可能地消耗。请改用正则表达式标记\w
。
$url = '/#123_abc" data-text="something-something"';
preg_match('~/#\w+~', $url, $result);
echo $result[0]; //=> "/#123_abc"
答案 2 :(得分:0)
您可以使用以下正则表达式:
/\#\S+?(?=")
说明:
/
- 字面正斜杠\#
- 文字哈希符号\S+?
- 一个或多个非空白符号(?=")
- 检查我们是否找到双引号的正面预测。$url = '/#123_abc" data-text="something-something"';
preg_match_all('#/\#\S+?(?=")#', $url, $result);
print_r($result[0]);
输出:
Array
(
[0] => /#123_abc
)