单词

时间:2018-05-07 14:02:34

标签: php regex

在一个字符串里面我有几个带点的单词; e.g:

  

lorem 1.5 ipsum。 Cratea lopusus。

经过多次测试后,如果点在一个单词后面,我看不到如何删除这些点。例如,我想得到这个字符串:

  

lorem 1.5 ipsum Cratea lopusus

我已经使用这么多正则表达式测试但没有成功:

/\.\b/     /[.]\b/    /[\.]\b/ ...

你能给我一个例子来删除点(在一个单词后面放置点)吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:-1)

你可以像这样使用preg_replace()函数

$str = 'lorem 1.5 ipsum. Cratea lopusus.';
$result = preg_replace('/([^0-9])\./', '${1}', $str);

答案 1 :(得分:-1)

你可以尝试

\b\.\B

这将匹配在单词边界之后和非单词边界之前的所有句点。但是,有些事情需要考虑:

  • 根据你的正则表达式风格定义“单词字符”
  • 如果您需要匹配的句号之前有非单词字符。例如,它与“我想要$ .gimme now”
  • 中的时期不符

否则,您可以使用特定字符集[]代替\b

/([a-zA-Z0-9!@#$%^&*()]+)\.\B/  

preg_replace("/([a-zA-Z!@#$%^&*()]+)\.\B/", "\${1}", $str);  

请注意我使用的字符集只是一个示例,您可以根据需要进行修改。