0

私のプログラムには次のような文字列が含まれています

$abc= "mojo logo sfdgsdj2123 *** mojo **";

に変更したい

$abc= "mojo *** mojo **";

これどうやってするの?

また、"logo" と最初の " * " の間の文字は、" * " 以外の文字にすることができます (つまり、必ずしも sfdgsd2123 とは限りません)。

したがって、基本的に問題は、最初の「mojo」の後に最初に出現する「*」まで削除することです。

助けてください...

4

1 に答える 1

1

あなたが「どうすればこれを行うことができますか?」と尋ねたように、置換コードを書くのではなく、「これはあなたがそれを行う方法です」と答えます。

方法は次のとおりです。

  1. 「mojoという単語が前にある0個以上のアスタリスク以外の文字のシーケンス」の正規表現を作成します

  2. その正規表現に一致する部分文字列の最初の出現を空の文字列に置き換えます。

それだけです。これは、Perl と、肯定的な後読みをサポートするのに十分な洗練された正規表現エンジンを備えたほとんどの言語の小さなワンライナーです。

おかしいと思われる場合は、文字列を 1 文字ずつ調べてみてください。「mojo」が最初に現れる場所を見つけます。次に、遭遇したアスタリスク以外の文字をすべて削除しながら、文字列を調べ続けます。

于 2013-09-20T02:23:40.960 に答える