Skip to main content
Known Participant
April 26, 2018
Answered

スペースの次のアルファベットだけ書体を変えたい

  • April 26, 2018
  • 2 replies
  • 874 views

Mac OS Yosemiteで、InDesignCS6を使っております。

段落頭またはスペースのあとにくるアルファベットだけ、記号用のフォントに置き換えする正規表現を思案しているのですが、

初心者ゆえに、スペース文字まで記号用フォントに置き換わってしまいぐちゃぐちゃになりました…。

^[\l\u]|\s[\l\u]

正規表現は現在こんな感じです。

スペース文字はあくまで「これのあとの欧文に適応して」という条件として指定したいだけなのですが

どなたかヒントをください!

This topic has been closed for replies.
Correct answer yusuke.s

nicori.さん、こんにちは。

正規表現スタイルであれば、設定を2つ作ったほうがわかりやすいかもしれません。

行頭のアルファベットは

^[\l\u]

スペースの次に来るアルファベットだけ(ただしスペースを除外)は

(?<= )[\l\u]

これらの条件の正規表現スタイルに、同じ文字スタイルを充当するのです。

正規表現スタイルは重ねがけができたり、煩雑な正規表現を分割して同じスタイルにしたり、そういったことも利点の一つです。あまりいたずらに増やしてしまうとまたそれは大変ですが、無理に一つの正規表現ですべて対応しようとしなくても大丈夫です。

2 replies

yusuke.s
yusuke.sCorrect answer
Inspiring
April 26, 2018

nicori.さん、こんにちは。

正規表現スタイルであれば、設定を2つ作ったほうがわかりやすいかもしれません。

行頭のアルファベットは

^[\l\u]

スペースの次に来るアルファベットだけ(ただしスペースを除外)は

(?<= )[\l\u]

これらの条件の正規表現スタイルに、同じ文字スタイルを充当するのです。

正規表現スタイルは重ねがけができたり、煩雑な正規表現を分割して同じスタイルにしたり、そういったことも利点の一つです。あまりいたずらに増やしてしまうとまたそれは大変ですが、無理に一つの正規表現ですべて対応しようとしなくても大丈夫です。

Yusuke S.
Erk.YAuthor
Known Participant
April 26, 2018

2つに分割したらできました!ありがとうございます。

もしよかったら詳細に教えていただきたいのですが…

(?<= )←これの意味がよくわかってないです。

コピペすれば動きましたが、それぞれどのような役割なのでしょうか。

リファレンスには肯定あと読み、とありましたがその説明だとピンときません。

どういう挙動をするものなんでしょうか。応用するとしたらどういう場面で使えますでしょうか。

すみません図々しいのですが、知りたいです。

yusuke.s
Inspiring
April 26, 2018

nicori.さん

「肯定後読み」だけだと確かになんだかわかんないですよね。

名前よりも実際どういう挙動をするのかを試行錯誤して、「肯定/否定」・「あと/さき」読みを自分なりに納得すればいいと思います。

肯定後読みについて少し補足すると、

(?<=[条件])[マッチする語句]

というような意味合いで、この[条件]は検索マッチの対象になりません。

なので、

a[bc]

(?<=a)[bc]

という正規表現を比べると、後者はa自体はマッチしません(直前にaがあるbかcがマッチする)。

一方、前者はabかacという文字列がマッチします。

つまり、検索する条件には加えたいけれど、検索にマッチさせたくない、という場合に有用です。

ネットで調べるといろいろ出てきますので、ご自身で納得できるまでいろいろ試してください^^/

Yusuke S.
monokano
Community Expert
Community Expert
April 26, 2018

1つの正規表現だけで両方ともマッチさせるのは無理かもしれません。

以下の2つに分けて実行する(正規表現スタイルなら2つ仕込む)しかないかも。

  • 段落先頭の「アルファベット1文字にマッチ」 ^[\l\u]
  • 段落先頭+空白文字1文字直後の「アルファベット1文字にマッチ」 (?<=^ )[\l\u]