3

文中の数字を含むすべての単語を削除しようと最善を尽くしましたが、それでもうまくいきません! そして、次の正規表現も試しました:

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

3 に答える 3

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.

ただし、この正規表現は末尾のスペースではなく先頭のスペースを削除するため、FIRST ワードに数字が含まれている場合、結果の前にスペースが追加されます。したがって:

<?php

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

戻り値:

 foo bar
^
于 2012-06-13T22:47:08.667 に答える
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

単語の一部として含めたい特殊文字は、文字クラスに追加する必要があります。

于 2012-06-13T23:44:07.390 に答える
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;
?>
于 2012-06-13T22:28:35.917 に答える