我尽力删除句子中包含数字的所有单词,但仍然不成功!我甚至尝试了以下正则表达式:
$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.
答案 0 :(得分:2)
<?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
^
答案 1 :(得分:2)
这是一个(希望)无怪的方式(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
您希望将所有特殊字符作为单词的一部分包含在字符类中。
答案 2 :(得分:1)
好吧,我用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;
?>