簡體   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