php - 正则表达式在php中分隔单词数字和符号

标签 php regex

我有以下示例字符串

Lot99. Is it 1+3 or 5 or 6.53

我想要下面的结果

["Lot99",".","Is","it","1","+","3","or","5","or","6.53"]

因此,结果消除空格,分隔单词,但如果单词和数字之间没有空格,则将它们放在一起,如果不在单词的开头或结尾,则将数字分隔开。分隔符号,如 +-.,!@#$%^&*();\/|<>但如果 2 个数字之间的小数点不存在,例如 2.2 应保持为 2.2

到目前为止我有这个正则表达式 /s+[a-zA-Z]+|\b(?=\W)/

我知道的不多,但我访问了很多网站来学习 RegEx,但我仍在努力了解这门语言。如果您的回答可以,请包括评论,以便我可以分解它并从中学习,这样我最终可以开始进一步修改它。

最佳答案

使用preg_match_all

preg_match_all('~(?:\d+(?:\.\d+)?|\w)+|[^\s\w]~', $str, $matches);

Regex101 Demo

解释:

  • (?:\d+(?:\.\d+)?|\w)+ 将匹配数字(float 或 int)或单词字符一次或多次匹配字符串像 foo99.9 , 88gg

  • | 或者

  • [^\s\w] 匹配非单词、非空格字符。

关于php - 正则表达式在php中分隔单词数字和符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35823872/

相关文章:

php - 如果在 php mysql 中存在其他插入,如何更新

javascript - JavaScript 中的正则表达式 .split()

javascript - 存储和检索搜索结果

php - php 或 mysql substring_index 中的字符串切片

javascript - 如何去除字符串中多余的空格?

javascript - 将多个 url 中的 "."替换为 [dots] 字符串

regex - 通配符的行为是否有所不同?

javascript - 为什么当用户点击搜索按钮时屏幕会弹出?

php - 如何使用 PHP 从文本文件(数组)中选择一个随机单词?

PHP 5.5.6 随机内存泄漏