繁体   English   中英

正则表达式删除包含句子中数字的所有单词

[英]Regex to delete all words containing numbers from a sentence

我尽力删除句子中包含数字的所有单词,但仍然不成功! 我甚至尝试了以下正则表达式:

$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.
<?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.

一个附带条件:由于此正则表达式删除前导空格而不是尾随空格,如果第一个单词包含adigit,则结果将有一个前置空格。 从而:

<?php

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

收益:

 foo bar
^

这是一个(希望)奇怪的免费方式( ideone ):

$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

您希望作为单词的一部分包含的任何特殊字符,您需要将其添加到字符类中。

好吧,我在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;
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM