終了

正規表現スタイルでカッコ周辺の特定文字を含む場合

エクスプローラー ,
Feb 21, 2018 Feb 21, 2018

リンクをクリップボードにコピー

コピー完了

はじめまして、質問します。

[]内の文字と[A]プラグや[B]スイッチなど、[]のあとに

プラグまたはスイッチと続く文字列を黒太字にする正規表現スタイルと、

[Aボタン][Bボタン]などの、[]内に●●●●ボタンと含まれる場合に

赤太字にするスタイルを適応させる正規表現スタイルを書いてみたのですが

それぞれが同じ段落内に2回出てくると、間の関係ない文字までスタイルが適用されてしまいます。

正規表現スタイルには以下のように書いています。

赤太字は[.+ボタン?]

黒太字は[.+?]|[.+?]プラグ|[.+?]スイッチ

理想の例文)

[スタート]するには、[A]スイッチを押したのち[Bボタン]を3回押すと[ランプ]が光ります。

こういう感じにしたいのですが…

実際の文章)

[スタート]するには、[A]スイッチを押したのち[Bボタン]を3回押すと[ランプ]が光ります。

となってしまいます。

どなたかアドバイスいただけませんでしょうか…

よろしくお願いします。

表示

1.6K

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines

correct answers 1 件の正解

Community Expert , Feb 21, 2018 Feb 21, 2018

スクリーンショット 2018-02-22 10.58.27.png

どうでしょう?

  • 「黒」を先に適用するようにすれば簡潔にできます。
  • [^]] だけだと改行文字にマッチしてしまうので、 \r も除外しています。

投票

翻訳

翻訳
Community Expert ,
Feb 21, 2018 Feb 21, 2018

リンクをクリップボードにコピー

コピー完了

スクリーンショット 2018-02-22 10.58.27.png

どうでしょう?

  • 「黒」を先に適用するようにすれば簡潔にできます。
  • [^]] だけだと改行文字にマッチしてしまうので、 \r も除外しています。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
エクスプローラー ,
Feb 21, 2018 Feb 21, 2018

リンクをクリップボードにコピー

コピー完了

お返事ありがとうございます!無事適応できました。

本当に助かりました…!

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
エクスプローラー ,
Feb 21, 2018 Feb 21, 2018

リンクをクリップボードにコピー

コピー完了

[Aボタン]は緊急時のみ[D]プラグを併用します

となってほしいところが

[Aボタン]は緊急時のみ[D]プラグを併用します

となるのは何が理由でしょうか…

まだ見ていらしたら、教えていただければと思います。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Feb 21, 2018 Feb 21, 2018

リンクをクリップボードにコピー

コピー完了

あーごめんなさい…。ちょっと手抜きですけど、こんなんでもいいかなと。

誰かがもっとうまく書いてくれるかもしれません。

スクリーンショット 2018-02-22 12.22.59.png

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Feb 21, 2018 Feb 21, 2018

リンクをクリップボードにコピー

コピー完了

エラーの原因ですけど、正規表現は最長一致の原則があります。

複数のマッチする文字列があると、一番長いマッチ文字列に適用するというものです。

そのため、

[.+ボタン]

という正規表現パターンは

[Bボタン]

にマッチしますが、同時に

[A]スイッチを押したのち[Bボタン]

にも

[スタート]するには、[A]スイッチを押したのち[Bボタン]

にも

[スタート]するには、[A]スイッチを押したのち[Bボタン]を3回押すと[ランプ]

にもマッチします。

最長一致なので、これらのマッチする文字列のうち一番長い文字列が採用されているというわけです。

それを避けるためには、どの文字でもマッチする「.」(ピリオド)を

使用してはいけません。目印となる文字にもマッチするからですね。

ですので、パターンの書き方としては、

[[^]]+ボタン]

つまり「目印となる文字を除く文字にマッチする」という書き方をしないといけないわけです。

ですので、monokanoさんの回答では不十分なのです。

ここまで書けば自力で解決できるでしょう。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
エクスプローラー ,
Feb 21, 2018 Feb 21, 2018

リンクをクリップボードにコピー

コピー完了

お二方のお返事、本当に感謝します!

(密かに憧れお慕いしておりました)おーまち様の回答で

繰り返しの謎が解けました!ピリオドのせいだったのですね。

monokano様のアイデアの]プラグと]スイッチを併用して、なんとか完成しました!

ありがとうございました!

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Feb 22, 2018 Feb 22, 2018

リンクをクリップボードにコピー

コピー完了

最新

あ、訂正。

[.+ボタン]

[スタート]するには、[A]スイッチを押したのち[Bボタン]を3回押すと[ランプ]

にはマッチしないです。

いろいろ書いてたのでおかしくなりました。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines