regular expression to relace fixed characters with space - regex

I need help in doing a simple replace in notepad++.
There is a fixed length of characters which needs to be replaced.
Attached screenshot.
example:
{111:001}{121:7c9cae72-49cb-4ef7-a576-d87af47ae74a}
{111:001}{121:2f0b8607-07d3-429b-a00c-7ed4b7f73358}
Common is: {111:001}{121:
And rest till the closing curly braces "}" is dynamic text.
Can someone please assist in creating a replace function to find all the lines
where the text starts with "{111:001}{121:" and the rest of the characters can be something else until it finds the closing curly brace "}".
if the entire text is found then should replace with blanks.

#Yashas solution worked absolutely fine:
\s*{111:001}{121:.*}

Related

Use REGEX to find line breaks within a wrapped content

The direct question: How can I use REGEX lookarounds to find instances of \r\n that occur between a set of characters (stand in open and closing tags), "[ and ]" with arbitrary characters and line breaks inside as well?
The situation:
I have a large database exported to tab or comma delineated text files that I'm trying to import into excel. The problem is that some of the cells come from text areas that contain line breaks, and are qualified by double quotes. Importing into excel these line breaks are treated as new rows. I cannot adjust how the file is exported. I data needs to be preserved, but the exact format doesn't, so I was planning on using some placeholder for the returns or ~
Here's a generic illustration of the format of my data:
column1rowA column2rowA column3rowA column4rowA
column1rowB column2rowB "column3rowB
3Bcont
3Bcont
3Bcont
" column4rowB
column1rowC column2rowC column4rowC
column1rowD column2rowD "column3rowD
3Dcont" column4rowD
My thought has been to try to select and replace line breaks within the quotes using REGEX search and replace in Notepad++. To try and make is simpler I have tried adding a character to the double quotes to help indicate whether it is an opening or closing quote:
"[column3rowB
3Bcont
3Bcont
3Bcont
]"
I am new to REGEX. The progress I've made (which isn't much) is:
(?<="[) missing some sort of wildcard \r\n(?=.*]")
Every iteration I've tried has also included every line break between the first "[ and last ]"
I would also appreciate any other approaches that solve the underlying problem
If you can use some tool other than Notepad++, you can use this regex (see my working example on regex101):
(?!\n(([^"]*"){2})*[^"]*$)\n
It uses a negative lookahead to find line breaks only when not followed by an even number of quotes. You could replace them with <br>, spaces, or whatever is appropriate.
Breakdown:
(?! ... ) This is the negative lookahead, necessary because it's zero-width. Anything matched by it will still be available to match again.
(([^"]*"){2})* This is the other key piece. It ensures even-numbered pairs of non-quote characters followed by a quote.
[^"]*$ This is ensuring that there are no more quotes from there until the end of the string.
Caveat:
I couldn't get it to work in Notepad++ because it always recognizes $ as the end of a line, not the end of the entire string.
Great answer from Brian. I added an option that would only consider real linebreaks (i.e. \n\r), which worked for my CSV file:
(?!\n|\r(([^"]*"){2})*[^"]*$)\n|\r

Regular expression to match the first appearance of a character

I'm far from a regex master, and I'm trying to match the first appearance of a semicolon for a Notepad++ search-and-replace and failing miserably at it. The best I've come up with is the following:
[^.*];
I figured this would capture the beginning of the line, all characters (if any), and then get to the semicolon. But this still ended up replacing all of the semicolons in the line. It also consumed the character before the semicolon, and I have no clue at all why that happens, so if anyone could explain that phenomenon, that would be an added bonus (but of course not essential to the actual answer).
I've got nothin'.
You need to capture the output before the semicolon in a group with parentheses, then the semicolon, then the remainder of the line. The following worked for me in Notepad++:
Find: ^([^;]*);(.*)$
Replace with: \1{whatever}\2

Deleting every 2nd line from a file using Notepad++

I am looking for some regex help.
I have a textfile, nothing super important but I would like to delete every second line from it - I have tried following this guide: Delete every other line in notepad++
However I just can't get it to work, is the regex I am using ok? I am noob with regex
Find:
([^\n]*\n)[^\n]*\n
Replace with:
$1
No matter what I try (mouse position at the beginning, ctrl+a and Replace All) I just can't get it to work. I appreciate any help.
I've put the regex into here: http://regexpal.com/ and if I remove the final \n it highlights the individual rows.
Make sure you select regular expression for the search mode...
Also, you may want to make that final newline optional. In the case that there are an even number of lines and you do not have a trailing newline, it won't remove the last line.
([^\n]*\n)[^\n]*\n?
Update:
See how Windows handle new lines with \r\n instead of just \n. Try updating the expression to take this into account:
([^\r\n]*[\r\n]+)[^\r\n]*[\r\n]*
Final Update:
Thanks to #zx81, I now know that N++ uses PCRE so \R can be used for unicode newline characters. However [^\R] won't work (this looks for anything except R literally), so you will need to keep [^\r\n]. This can be simplified as:
([^\r\n]*\R)[^\r\n]*\R?

Regular Expression Search Replace all non leading tabs with single space Notepad++

Regular Expressions have never been my strong suite, so I need some help here. I have a text file and I want to replace any "embedded" tabs with a space and only one space for x occurrences of tabs, but leave any "leading" tabs alone.
So for a line that looks like this:
\t\t\tThis is a\t\ttest to see\thow things\t will work.
would come out looking like this:
\t\t\tThis is a test to see how things will work.
So the only tabs left in the file would be at the beginning of any lines and there could be x number of tabs at the beginning of any line. Can anybody help me figure this one out?
I'm doing this with NotePad++ Search/Replace but I could use Visual Studio or some other tool if that would work better.
Find what:
(?<!\t)(?!^)\t+
The sequence of tabs \t+ must not be preceded by a tab (?<!\t), and also must not start from the beginning of a line (?!^).
Replace with:
<space>
Demo on regex101 (since Notepad++ also uses PCRE, I use t instead of tab for clarity)

Regular expression for everything between two characters

I'm trying to build a regular expression which allows me to remove tags in a string. These tags always look like this: {...}.
I've tried \{.*\} so far but unfortunately this won't work if these tags occur two times. For Example: {123} Hello {asdas}. The entire line would be deleted since it starts with a { and end with a }. So, how can I avoid this behaviour?
Thanks in advance.
\{[^}]*\}
would probably do it.
An opening bracket, followed by any number of anything besides a closing bracket, followed by a closing bracket.