php - 使用正则表达式从字符串中提取数字和符号

标签 php regex preg-match-all

我有一个包含文本、数字和符号的字符串。我试图从字符串中提取数字和符号,但收效甚微。我没有得到全部的数字和符号,而是得到了其中的一部分。我将在下面解释我的正则表达式,使其更清晰、更容易理解。

\d : any number
[+,-,*,/,0-9]+ : 1 or more of any +,-,*,/, or number
\d : any number

代码:

$string = "text 1+1-1*1/1= text";

$regex = "~\d[+,-,*,/,0-9]+\d~siU";
preg_match_all($regex, $string, $matches); 

echo $matches[0][0];

预期结果

1+1-1*1/1

实际结果

1+1

最佳答案

移除 U 标志。它导致 + 在其匹配中是非贪婪的。此外,您的字符列表中的字符之间不需要逗号。 (你只需要 1 , 如果你想匹配它。你需要转义 - 这样它就不会认为你正在尝试制作一个范围

关于php - 使用正则表达式从字符串中提取数字和符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32856068/

相关文章:

php - 使用 mysqli 的 Bind_param 非对象错误

php - 如何使用正则表达式在字符串中查找所有 YouTube 视频 ID?

php - 为 php preg_match_all 创建模式

php - 打开链接前的 jQuery 对话框确认

php - 如何制作一个页面,在单击项目时显示数据库中的特定项目

php - Paypal 运输详细信息中的未定义索引

python正则表达式匹配行在字符串后面包含数字,末尾有数字

正则表达式,两个字符之间的所有内容(转义字符除外)

php - 如何解析 <a name 和 <image src= inside <li tag using php?

php - 为什么 preg_match_all() 会多次创建相同的答案?