グレブと交換

グレブと交換

次のサンプルテキストがあります。

\documentclass[a4paper]{article}
\usepackage[a4paper,margin=2cm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{color}
\setlength{\parindent}{0em}
\setlength{\parskip}{2ex plus1ex minus0.5ex}
\newcommand{\stylea}[1]{\noindent{\textcolor[rgb]{0.9, 0.9, 0.8}{\fcolorbox[rgb]{0, 0, 0}{0.2, 0.2, 0.2}{#1}}}}

\begin{document}
\ttfamily
\setlength{\fboxrule}{0pt}
\setlength{\fboxsep}{0pt}
1 \stylea{\# Author{\hspace*{1em}}: Bhishan Poudel} \\
2 \stylea{\# Date{\hspace*{1em}}{\hspace*{1em}}: May 19, 2016} \\
3 \stylea{} \\
4 \stylea{Line wrapping in geany} \\
5 \stylea{===============================================================================} \\
6 \stylea{edit > preference > editor > features > line wrapping} \\
7 \stylea{then,} \\
8 \stylea{document > line wrapping} \\
\end{document}

\stylea{}という単語をすべて削除し、{}内の単語はそのまま残したいと思います。

\stylea{を見つけて置き換えることができ、空白に置き換えることができることを知っていますが、空白も必要ではなく、閉じた括弧}も削除したいと思います。

そしてジニーでは、選択したブロックの単語だけを置き換えることができますか?たとえば、1行から8行を選択し、styleaをstylebに変更した場合。

ベストアンサー1

グレブと交換

正規表現の検索/置換を使用すると、この操作のほとんどを実行できます。

[置換]ダイアログボックスを使用して、複数行の一致を使用するのではなく正規表現を使用することが選択されていることを確認します。

探す:

\\stylea{(.*)}

次に交換してください:

\1

これは、検索式で「キャプチャされた」テキスト(角括弧内の部分)の正規表現「逆参照」です。キャプチャが複数ある場合などを使用して参照できます\1\2

ただし、正規表現には問題を引き起こす可能性がある制限があることに注意してください。一部のテキスト行には中かっこが入れ子になっています。たとえば、次のようになります。

\stylea{\# Date{\hspace*{1em}}{\hspace*{1em}}: May 19, 2016}

正規表現だけでは、{}このようにネストされた区切り文字()を評価して一致させることはできません。あなたの場合、キャプチャは(.*)行が終わる前にできるだけ多くの文字と一致するので(「貪欲な一致」)、これは実際の問題ではありません。これは、各\stylea{}ラベルが次のようになるため、サンプルテキストで正しいことを行います。行に。ファイルに\stylea{}複数行にまたがるタグが含まれている場合、この方法はテキストを正しく置き換えません。最善の方法は、これらのインスタンスを最初に見つけてから手動で変更するか、複数行にまたがっていないことを確認することです。

これは正規表現検索/置換を提供する多くのエディタで機能しますが、ダイアログオプションの詳細はもちろん異なります。私はMac OS XのTextWranglerでテストしました。

選択時にのみ変更

8つの番号付きの行を選択します。探す:

\\stylea{

次に交換してください:

\\styleb{

次に、[交換]ダイアログボックスの[選択項目内]ボタンをクリックします。

おすすめ記事