-1

preg_replaceを使用して、大文字、数字、特殊文字、または最初の文字が大文字であるが3文字以下の単語のみを残すにはどうすればよいですか.

例えば:

Portocjnk Karaer HDS-C 7/11、9/15、8/15-E => HDS-C 7/11、9/15、8/15-E

ケルヒャー ケルヒャー B 140 R Bp => B 140 R Bp

ケルヒャー ケルヒャー B 140 R Bsp Trr => B 140 R Bsp Trr

タタタ タタット ヤードマン YM 84 MW 31AY97KV643 => YM 84 MW 31AY97KV643

(タタタ) (タタト) ヤードマン YM 84 MW 31AY97KV643 => YM 84 MW 31AY97KV643

前もって感謝します。

4

2 に答える 2

1
preg_replace('|\b([A-Z][a-z][a-z][a-z][a-z\-]*)\b|','',$text);

これはあなたの例のほとんどで動作します

于 2011-02-28T02:18:55.263 に答える
0

これは単純なホワイトリスト アプローチです。preg_replaceing の代わりに、これは最初に目的のパーツを抽出します。その後、$result 配列を再マージする必要があります。

preg_match_all('#\b[A-Z\d][A-Z\d/,-]*\b|\b(?<!-)[A-Z][a-z]{1,2}\b#', $str, $result);
$result = implode(" ", $result[0]);

[...]2 番目の文字クラスに「特殊」文字をさらに追加する必要がある場合があります。

正規表現の設計に役立つ便利なツールについては、https://stackoverflow.com/questions/89718/is-there-anything-like-regexbuddy-in-the-open-source-worldをご覧ください。

于 2011-02-28T02:27:18.200 に答える