Notepad++에서 와일드카드/정규식 문자를 사용하여 찾기 및 바꾸기

Notepad++에서 와일드카드/정규식 문자를 사용하여 찾기 및 바꾸기

다음 구조의 HTML 코드가 있습니다.

        <td class="tar">
      <div class="bubble in">
        Some Text, I want to keep! And maybe even an image: <img src=
        "12345.png" width="22" height="22" alt="0" class="example" /><br />
        <span class="time"><div style="text-align:right">17:14</span></div>
      </div>
    </td>
  </tr>

  <tr>
    <td class="tal">
      <div class="bubble out">
        Some Text, I want to keep!<br />
        <span class="time"><div style="text-align:right">17:15</span></div>
      </div>
    </td>
  </tr>

이것이 버블인(Bubble In)과 버블아웃(Bubble Out) 두 참가자의 채팅 구조이다. 이제 이미지를 사용하여 "버블 인"의 타임코드를 확장하고 싶습니다.

내가 생각해낸 내용은 다음과 같습니다.

무엇을 찾다:

<div class="bubble in">[^"]*<span class="time"><div style="text-align:right">([0-9]*[0-9]*):([0-9]*[0-9]*)</span></div>

다음으로 교체:

<div class="bubble in">\1<span class="time"><div style="text-align:right">\2\3\4\5\6&#160<img src= "test.png" width="16" height="10" alt="0"/

검색은 작동하지만 \1을 바꾸는 것은 어떻게든 작동하지 않습니다. 저를 도와주실 수 있나요? 미리 감사드립니다

답변1

해당 그룹을 캡처하지 않기 때문에 작동 \1하지 않습니다. 그룹 주위에 괄호를 넣어야 합니다. 하지만 더 많은 문제가 있는 것 같습니다. 귀하의 예를 사용하여 Notepad++에서 시도하면 일치하는 항목을 찾을 수 없으며 기대하지도 않습니다.

현재 패턴은 열린 div 태그에서 거품을 찾고 그 뒤에 큰따옴표가 아닌 문자 수와 시간 범위 태그가 옵니다. 귀하의 예에서는 img 태그에 먼저 큰따옴표가 있으므로 일치하지 않습니다.
시간 캡처 부분에는 몇 가지 이상한 일이 벌어지고 있습니다. 즉, [0-9]*숫자 0-9가 여러 번 나타나는 것을 의미하지만 이를 반복합니다. 나는 당신이 정말로 0-9를 두 번 원했고 그 뒤에 콜론과 두 개가 더 오기를 원했다고 추측합니다.

그래서:
<div class="bubble in">(.*?)<span class="time"><div style="text-align:right">([0-9]{2}):([0-9]{2})</span></div>

탐욕 .*?스럽지 않게 일치하는 항목을 찾습니다. 그러나 div의 버블에 시간 범위가 없으면 시간 범위를 찾을 때까지 해당 div에서 바로 벗어나 다른 항목으로 이동합니다. 다행히도 이는 당신이 대처할 수 있는 문제입니다. 그렇지 않으면 정말 복잡해집니다. [0-9]{2}정규식에 정확히 2개를 원한다고 알려줍니다 . 시간에 앞에 0이 없으면 {1,2}1과 2 사이를 찾는 것으로 변경하십시오.

마지막으로 교체 항목에는 이제 3개의 캡처된 그룹이 있습니다... "일부 텍스트, 보관하고 싶습니다!...", 시간 및 분. 그래서 \4\5\6현재 없습니다. 아, 그리고 옵션을 선택하는 것을 잊지 마세요 . matches newline. 그렇지 않으면 둘 중 하나도 일치하지 않을 것입니다(적어도 귀하의 예에서는).

행운을 빌어요!

관련 정보