28

Here's my problem: In a .txt file, I need to find and replace thousands of instances of syntax like this:

(see (a053007djfgspwdf))

or

(see (a053007djfgspwdf) and (a54134xsedgeg))

or

(see (a053007djfgspwdf), (a9554xsdfgsdfg) and (a54134xsedgeg))

There is a lot of variety between the beginning (see (a and the ending )) text strings. Can this be set up in Notepad++ using regex? If so, how would I do that? Thanks!

user
  • 30,336

5 Answers5

27

Sorry folks, I just find other answers complicated. (No disrespect intended towards the original posters.)

As this always shows up as the first search result, I'll add this in:

  1. Open the search/replace dialog (CTRL+F then the replace tab)
  2. Tick "Regular Expression" down the bottom
  3. Use .* as the wildcard

For example, I wanted to remove all instances of abp="1314", abp="1313", abp="1312" etc (basically the numbers are all different, which is why you want a wildcard to get rid of them).

In the replace dialog:

Find in what: abp=".*"
Replace with:

(You're replacing anything within those quotes with nothing to get rid of it)

Source: https://www.organicweb.com.au/17226/general-technology/notepad-wildcard/

techraf
  • 4,952
20

Yes it can! Notepad++ has a RegEx search mode that you can select for all of your RegEx replacement needs.

The example below is a basic replace for anything between (see (a...)) with the exception of a line break. You may need to modify the RegEx or write your own to fit your needs. Here's a great place to help you along with experimenting.

RegEx: \(see \(a.+\)\)

Matched strings:

(see (a053007djfgspwdf))
(see (a053007djfgspwdf) and (a54134xsedgeg))
(see (a053007djfgspwdf), (a9554xsdfgsdfg) and (a54134xsedgeg))


Replace (see (a...)) with replacement

one.time
  • 733
1

As some of these were too in depth for me to understand, let me show you what I did after reading all of these solutions and more to finally get a better understanding. (this is a simple approach, might not be the best)

I wanted to remove all of my figure elements on the whole web page. Figure 2.1,Figure 1.1,ect.

It was:

<p class="td1-content b8"><span class="stepNumber">2.  </span>Select Memo from the toolbar<br><b>Figure 2.1</b></p>

I wanted it to end up:

 <p class="td1-content b8"><span class="stepNumber">2.  </span>Select Memo from the toolbar</p>

But each

had a different Figure number, so I used this in sublime text 2.

  1. ctrl H
  2. click the ".*" symbol on the bottom right of Sublime text 2, (regex)
  3. typed <br><b>Figure.*</b>
  4. replace with: -left blank

This replaced all of my instances with figures in it. notice I used .* where the numbers would of been. Hope this helps.

Jim Schwetz
  • 13
  • 1
  • 5
1

Try this pattern: \(see \(a(.*)\) and make sure you have ". matches newline" unchecked and "wrap around" checked.

ethmz
  • 396
0

The exact regex you'd need is:

\(see \(\w+\)((, \(\w+\))*( and \(\w+\)))?\)

For example:

enter image description here

On selecting Find All in Current Document, the result would be:

enter image description here

You can simply use Replace as per your necessity instead.

If you want to include the a as well in the regex, you can use:

\(see \(a\w+\)((, \(a\w+\))*( and \(a\w+\)))?\)