[정규 표현] 〇〇라는 문자열이 붙지 않는 부분을 검색한다(부정적 미리 읽기)

4844 단어 정규식
모쿠지
h tps:// 퀵했다. 작은 m / 절 1707 / MS / 4f입니다 73D86 그림 d283 그림 C4f

하고 싶은 일



정규 표현으로 "000"이라는 문자열이 붙지 않는 부분이라는 검색을하고 싶기 때문에 정규 표현의 "부정적 미리 읽기"를 사용하고 싶다.
또한 그렇게 검색 한 문자열을 대체하고 지우고 싶습니다.

구체적으로 하고 싶은 일로는
Qiita 기사의 목차를 만들고 있는데, 기사의 타이틀에 그 기사가 무엇을 쓰고 있는지를 표현하기 위해 [WPF/xaml] 라든지 【C#/WPF】 에서 기사 타이틀에 이것을 붙이면 왠지 엉망으로 하기 때문에, 그 부분을 하고 싶다.

구체적으로 하고 싶은 일



구체적으로는, 이러한 문자열로부터,


이것을 지우고 싶다.

현재의 목차 내용



현재, 목차는 아래와 같은 글쓰기를 하고 있다.
# 目次

- **ラズパイ+WindowsIoT(UWP/C#)**
    - [RaspberryPi3でWindows10 IoT Coreを動かす(2019/02/13)](https://qiita.com/tera1707/items/51027e2896f708959eaf)
    - [[C#/WinIoT/I2C] 9軸センサ(MPU-9150)でジャイロ・加速度・磁力センサの値をとる](https://qiita.com/tera1707/items/33a8b439fddc1075f93b)
    - []()

- **画面作成(WPF/xaml)**
    - [[WPF/xaml] xaml+C#で当番決めのためのルーレットを作る](https://qiita.com/tera1707/items/2a94c262c93b93854688)
    - [[WPF/xaml]Storyboardでアニメーションをつくる](https://qiita.com/tera1707/items/a7fcdd95fc3120ae3c8b)
    - [[WPF/xaml]Storyboardでアニメーションをつくる2(TargetPropertyの階層的な指定)](https://qiita.com/tera1707/items/ee6d72bb68a8e2131082)
    - [[WPF/C#]Prism(6.3.0)のRegionで画面遷移をする](https://qiita.com/tera1707/items/ad4437bb64077e214c5e)
    - [【C#/WPF】EventTriggerを使って、Buttonでなくてもクリック時のCommandをかけるようにする](https://qiita.com/tera1707/items/7ecde6e97a19437cbf72)
    - [【WPF】ListBoxのアイテムに、バインドしたコレクションのインデックスを出す](https://qiita.com/tera1707/items/791bdb887eae4c0ea6a4)
    - [【WPF】ItemsControlで、複数のControlを重ねて表示する](https://qiita.com/tera1707/items/47c932d84b1b706dc344)
    - [【WPF】ControlTemplateの中にViewModelのプロパティをバインドする](https://qiita.com/tera1707/items/c2e2450b823f3ca77952)
    - [【WPF】RelativeSource(バインディング)の使い方メモ](https://qiita.com/tera1707/items/73cda312b7cd9c4df40d)
    - [WPFのListBoxをカスタムする](https://qiita.com/tera1707/items/363d2a33eadcb3eb275a)
    - [簡単なユーザーコントロール(WPF)の作り方](https://qiita.com/tera1707/items/8d24b21a05ad84a1c92f)
    - [WPF画面とやり取りするための最低限の構成](https://qiita.com/tera1707/items/9114906e07cc80f6ed61)

以下略

먼저 시도한 것



""["와"]"로 문자수 부정의 문자열을 사이에 두고 있는 부분을 검색한다"라는 의미로, 정규 표현 \[\[.*\] 로 검색을 하면 된다고 생각 실시했지만, 아래와 같이 되어 버렸다.


위에서 "["와 "]"로 구부러진 부분 안에, 한층 더 "["와"]"로 구워진 부분이 있기 때문에, 정말로 지우고 싶다 [] 의 바깥쪽 [] 잡혀버린다.

해결 방법 (정규 표현식의 "부정적 사전 읽기" 사용)



이것은 혼잡하기 때문에,
'외부 [] 뒤에는 반드시 (가 붙는다'는 점에 주목했다.

이것을 이용하여,
""["와 "]"로 문자수 부정의 캐릭터 라인을 사이에 두고 있는 부분을 검색한다. 단, "]"의 직후에 "("가 붙지 않는 것을 검색한다."라고 하는 조건으로 하려고 생각했다 .

여기서, 정규 표현의 「부정적 선독」을 사용한다.

부정적인 미리 읽기를 작성하는 방법


(?!否定したい文字列) 라고 쓴다.

이번처럼 "["뒤에"("가 붙어 싶지 않다면 (?!\() 라고 쓴다.
※"("는 특수문자이기 때문에 "\"를 앞에 붙일 필요가 있다.

게다가 이번에 하고 싶은 「"["와"]"로 문자수 부정의 캐릭터 라인을 사이에 두고 있는 부분을 검색한다.단, "]"의 직후에 "("가 붙지 않는 것을 검색한다."를 실현한다 에 \[\[.*\](?!\() 라고 적는다.

".*"는 "임의의 문자 수의 임의의 문자"를 나타낸다. 요점은 "사이에 몇 문자 와서 좋다"고 하고 있다.



그렇게 검색한 것이 아래.



이제 하고 싶은 검색을 할 수 있었다.



그리고, 목차안에 "【"와"】"로 끼인 부분이 있어, 이것도 지우고 싶기 때문에 \[【.*】 로 검색해, 치환했다. (이쪽은 보통으로 할 뿐이므로 간단.)



참고



부정적 사전 읽기 정보
htps : // ny도. 코 m/php 카테/293/

좋은 웹페이지 즐겨찾기