Чтобы удалить слова, состоящие из букв, цифр или символов подчеркивания и содержащие ди git, вы можете использовать
preg_replace("/[^\W\d]*\d\w*/", " ",$str)
Для удаления фрагментов непробельных символов , которые содержат ди git, используйте
preg_replace("/[^\s\d]*\d\S*/", " ",$str)
Если ди git следует смешать с другими символами, которые необходимо удалить, используйте
preg_replace("/(?:[^\W\d]+\d|\d+[^\W\d])\w*/", " ",$str)
preg_replace("/(?:[^\s\d]+\d|\d+[^\s\d])\S*/", " ",$str)
В вашем конкретном случае , поскольку вы также хотите сохранить конечную пунктуацию, вы можете использовать
preg_replace("/(?:[^\s\d]+\d|\d+[^\s\d])\S*\b/", " ",$str)
См. PHP demo , границу слова \b
потребует, чтобы последние совпадения символов с \S*
были словом char. В некоторых случаях вам даже нужно убедиться, что после него нет слова char, тогда вы замените \b
на \b(?!\w)
.
Детали шаблона
[^\s\d]*
- ноль или более символов, кроме пробелов и цифр \d
- di git \S*
- 0 или более непробельных символов [^\W\d]*\d\w*
- соответствует 0 или более символам, отличным от несловесных и di git символов, затем di git, а затем 0+ word char ("word" char - это буква, di git или _
) (?:[^\s\d]+\d|\d+[^\s\d])
- соответствует любой из двух альтернатив: [^\s\d]+\d
- 1+ символов, отличных от пробела и di git, а затем ди git |
- или \d+[^\s\d]
- 1+ цифр, а затем символ, отличный от пробела и ди git