다음과 같은 샘플 텍스트가 있습니다.
\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{
그런 다음 "교체" 대화 상자에서 "선택 항목 내" 버튼을 클릭합니다.