我有以下字符串,但我想要A +之前的所有内容。
我错过了什么吗?
字符串:
ABCD WWW 6587 SM A+++AB
正则表达式:
([0-9A-Za-z]*?) A\+
输出:
SM A+
期望的输出:
ABCD WWW 6587 SM
解决方案:
([0-9A-Za-z].*?) A\+
缺少.
(点)
答案 0 :(得分:2)
使用零宽度前瞻断言
^.*(?=A\+)
答案 1 :(得分:2)
您需要考虑这些空间。 .
比你的角色类简单得多,像(?=...)
这样的先行者可以让你匹配但忽略A+
。所以,这个正则表达式有效:
(.*?)(?= A\+)
<强>输出:强>
ABCD WWW 6587 SM
PHP代码:
$str= "ABCD WWW 6587 SM A+++AB";
preg_match('~(.*?)(?= A\+)~', $str, $matches);
echo $matches[1];
答案 2 :(得分:1)
这样做
$str=" ABCD WWW 6587 SM A+++AB";
echo preg_replace('~(.*)A\+.*~','$1',$str);
输出
ABCD WWW 6587 SM