knowledge9876
@knowledge9876

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

正規表現で、後ろと前のどちらかか、両方ありうるパターンを前後一括で書くにはどうしたらいいでしょうか?

例文 以下の文章行のときに、前後のどちらかに(心|体)が合った場合は"ノート"を"脳と"に変更する

ノート心と体が発達していく
体と心とノート教養が発達していく。

正規表現で変更後
脳と心と体が発達していく
体と心と脳と教養が発達していく。

説明
この正規表現の課題は両方のパターンを二度書きせずに1回だけで前後のどちらの場合でもマッチするようにしたいです。
同じ単語は前後で二度書きせずに済む方法です。
よろしくお願いいたします。

0

1Answer

「ノート」を一度しか書いちゃダメという解釈で合ってます?

const re = /(?=.*[心体])(.*)ノート/;
console.log('ノート心と体が発達していく'.replace(re, '$1脳と'));
console.log('体と心とノート教養が発達していく。'.replace(re, '$1脳と'));
2Like

Comments

  1. @knowledge9876

    Questioner

    ありがとうございます。
    "ノート"も"心"と"体"もどれも1回書きで前後に同じ単語を書かずに済む方法になります。
    よろしくお願いいたします。
  2. ん、このコードはその条件を満たしてはいませんか?
  3. @knowledge9876

    Questioner

    ありがとうございます。
    検索で、
    (?=.*[心体])(.*)ノート(?=.*[心体])

    このようにしたときに、ノートの前か、後ろに(心|体)がある場合も、どちらでも検索にひっかかりますでしょうか?
    前後どっちに(心|体)がある場合でもひっかかるようにしたいです。

    これは前と後ろの二パターンを2回分けて書くのは容易ですが、莫大にこの事例のような同様のパターンがあって記述しないといけないため、(心|体)は1回の記述で前後兼用した書き方はないかと探しています。
    よろしくお願いいたします。




  4. 上のコードはちゃんと実行して頂けました?

    /(?=.*[心体])(.*)ノート/

    ↑この正規表現で、

    >ノート心と体が発達していく
    >体と心とノート教養が発達していく。

    どちらも

    >脳と心と体が発達していく
    >体と心と脳と教養が発達していく。

    と置換できてますがそういう事じゃない?



  5. @knowledge9876

    Questioner

    ありがとうございます。
    私がわかってませんでした。
    そのとおりでした。
    この度はありがとうございました。

Your answer might help someone💌