PHP正则表达式-删除所有前导,尾随和独立的连字符

科拉莱克(Koralek M.)

我正在尝试从字符串中删除所有前导,尾随和独立的连字符:

-on-line - auction- website

所需结果:

on-line auction website

我想出了一个可行的解决方案

^-|(?<=\s)-|-(?=\s)|-$

但是在我看来,它有点业余(不是吗?)。那么您有更好的解决方案吗?

卡西米尔和希波吕特

您可以使用以下模式:

(?<!\S)-|-(?!\S)

例子:

echo preg_replace('~(?<!\S)-|-(?!\S)~', '', '-on-line - auction- website');

另一种使用条件语句的可能模式: -(?(?!\S)|(?<!\S.))

最后一个很有趣,因为它受益于带有前导文字字符的单个分支。这样,正则表达式引擎能够快速测试字符串中字符出现的位置(由于“正常”正则表达式引擎运行之前的内部优化)。

请注意,条件语句不是强制性的,也可以由添加了的非捕获组替换:(它不会更改结果,但会更长):

-(?:(?!\S)|(?<!\S.))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

正则表达式删除所有前导和尾随的特殊字符吗?

来自分类Dev

PHP:处理所有正则表达式匹配

来自分类Dev

PHP正则表达式删除彼此相邻的句点

来自分类Dev

PHP正则表达式,字符为“ä”

来自分类Dev

PHP正则表达式中的“〜”字符表示什么?

来自分类Dev

PHP正则表达式字符串替换

来自分类Dev

正则表达式替换PHP中的特殊字符?

来自分类Dev

正则表达式字符,后跟数字php

来自分类Dev

PHP正则表达式中的“〜”字符表示什么?

来自分类Dev

PHP正则表达式特殊字符

来自分类Dev

PHP正则表达式+(加号)元字符

来自分类Dev

PHP正则表达式仅匹配某些字符

来自分类Dev

php之间的正则表达式字符串

来自分类Dev

PHP中的正则表达式转义转义字符

来自分类Dev

php正则表达式特殊字符

来自分类Dev

带有单词边界的PHP正则表达式

来自分类Dev

有可能加快PHP正则表达式

来自分类Dev

有条件的PHP正则表达式

来自分类Dev

使用php中的正则表达式删除字符后的所有字符

来自分类Dev

如何在PHP中使用正则表达式删除前导字符和查询字符?

来自分类Dev

正则表达式删除所有字符

来自分类Dev

正则表达式删除尾随字符

来自分类Dev

PHP正则表达式:从开始和结束删除所有字符

来自分类Dev

正则表达式以匹配必须在PHP正则表达式中转义的字符

来自分类Dev

如何正则表达式匹配和正则表达式替换php中的字符串

来自分类Dev

使用正则表达式删除连字符

来自分类Dev

当正则表达式有转义时,在 php 中重写 javascript 正则表达式

来自分类Dev

带有连字符的正则表达式单词

来自分类Dev

删除链接的正则表达式

Related 相关文章

热门标签

归档