Регулярное выражение для удаления всех слов, содержащих числа из предложения

Я изо всех сил старался удалить все слова в предложение с числами в них, но все же безуспешно! И я даже попробовал следующее регулярное выражение:

$regex = '/(\\s+\\w{1,2}(?=\\W+))|(\\s+[a-zA-Z0-9_-]+\\d+)/'; $x=preg_replace($regex,"",$x); 

Я пытаюсь выполнить следующее:

Исходный текст со словами, содержащими числа и любой особый символ, такой как – и _:

 This is S3F8G m7j34m h98H40D-3D39 90843-432423 LSDF3 4X4it very good 343c3. 

Окончательный текст должен быть следующим:

 This is very good. 

Solutions Collecting From Web of "Регулярное выражение для удаления всех слов, содержащих числа из предложения"

Ну, я написал в Javascript:

 var str = 'This is S3F8G m7j34m h98H40D-3D39 90843-432423 LSDF3 4X4it very good 343c3.'; var result = str.match(/(^[\D]+\s|\s[\D]+\s|\s[\D]+$|^[\D]+$)+/g).join(''); 

Но вы можете попробовать это в PHP:

 <? $str = 'This is S3F8G m7j34m h98H40D-3D39 90843-432423 LSDF3 4X4it very good 343c3.';; preg_match_all("/(^[\D]+\s|\s[\D]+\s|\s[\D]+$|^[\D]+$)+/",$str,$result); $result = implode('',$result[0]); echo $result; ?> 
 <?php $x="This is S3F8G m7j34m h98H40D-3D39 90843-432423 LSDF3 4X4it very good 343c3."; $re="/ ?\b[^ ]*[0-9][^ ]*\b/i"; print preg_replace($re, "", $x) . "\n"; 

возвращает:

 This is very good. 

Одна оговорка: поскольку это регулярное выражение разбивает ведущее пространство, а не конечное, если слово FIRST содержит adigit, тогда результат будет иметь место. Таким образом:

 <?php $x="9abc foo bar."; $re="/ ?\b[^ ]*[0-9][^ ]*\b/i"; print preg_replace($re, "", $x) . "\n"; 

возвращает:

  foo bar ^ 

И вот (надеюсь) причудливый способ ( идеон ):

 $str = '-12x This is S3F8G m7j34m h98H40D-3D39 90843-432423 LSDF3 4X4it very good 343c3. foo bar'; echo preg_replace('/\s+[\w-]*\d[\w-]*|[\w-]*\d[\w-]*\s*/', '', $str); 

Вывод:

 This is very good. foo bar 

Любые специальные символы, которые вы хотите включить как часть слов, которые вам нужно добавить в классы символов.