matching beginning of string and excluding end of string in regex - regex

I have some strings like the following:
abc4back
abc4backpre
abc4front
abc4frontpre
abc3side
abc3sidepre
xyz4over
xyz4overpre
and I want to get those only with the "abc4" but without the "pre". So far, my regex is:
abc4.*(?!pre).
But, when I ran this, I got the error:
error parsing regexp: invalid or unsupported Perl syntax: `(?!` .
I now know that this is because lookaheads are not supported in go.
But, I cannot figure out what expression I should use instead of ?!. Does anyone know what will work?

you can do this by multi negated character as
^abc4(?:.*(?:[^p].{2}|p[^r].{1}|pr[^e])|.{0,2})$
Regex Demo

Related

Regex to remove a whole phrase from the match

I am trying to remove a whole phrase from my regex(PCRE) matches
if given the following strings
test:test2:test3:test4:test5:1.0.department
test:test2:test3:test4:test5:1.0.foo.0.bar
user.0.display
"test:test2:test3:test4:test5:1.0".division
I want to write regex that will return:
.department
.foo.0.bar
user.0.display
.division
Now I thought a good way to do this would be to match everything and then remove test:test2:test3:test4:test5:1.0 and "test:test2:test3:test4:test5:1.0" but I am struggling to do this
I tried the following
\b(?!(test:test2:test3:test4:test5:1\.0)|("test:test2:test3:test4:test5:1\.0"))\b.*
but this seems to just remove the first tests from each and thats all. Could anyone help on where I am going wrong or a better approach maybe?
I suggest searching for the following pattern:
"?test:test2:test3:test4:test5:1\.0"?
and replacing with an empty string. See the regex demo and the regex graph:
The quotation marks on both ends are made optional with a ? (1 or 0 times) quantifier.

Exclude words with numbers from spellcheck in vim

Following a similar answer I would like to ignore words with numbers that are of the following format:
AB12
AB2
CD98
..
this is achieved with use of the following regex:
[A-Z]{2}\d{1,}
(regex101)
The syntax I'm trying:
:syn match ignoredCapitalWords +[A-Z]{2}\d{1,}+ contains=#NoSpell
does not seem to be generating the desired results as the words remain marked as potentially misspelled:
How can I correctly used the previously generated regex to exclude the desired patterns from regex?
Php regex engine is not vim regex engine. When you doubt your syntax pattern is right just create a new buffer with desired contents and then use / command. The given pattern throws an error, you just have to escape each { character with backslash. So, the correct pattern is: [A-Z]\{2}\d\{1,}. Never used #NoSpell but the pattern works.

regex_error. What's wrong with my regex

I'm getting regex_error for some reason. I also tried it the regular way of using escape characters (this method eliminates the need for escape sequences in c++ 11 by putting R"(something)" )
By the way if anyone was wondering, they are for recognizing lines in xml
When I use a web based regex tester it works fine.
string sstart = R"(\w*+(> ? +[^\\])++>)";
string send = R"(.*<\\\w\w[^m-o][^_]++)";
string sdata = R"([^>]++>[^ ]++)";
regex endtag(send);
regex taganddata(sdata);
regex starttag(sstart);
Syntax of you regular expressions is incorrect because of '++' part.
.+ matches one or more occurrences. But what do you try to match with .++ ?

Postgresql regex replace text field

Hi guys I have question about regex, can you help me extract date from text like:
Start 20130918 14:35:00
I wan extract 20130918 only from text.
I've tried something like this:
regexreplace(Start('\s+\w{5}\d{8}\s',''))
Better to use substring than regex_replace for this type of problem:
select substring('Start 20130918 14:35:00' from '[0-9]{8}')
You can use the following expression for matching the line:
Start\s+([0-9]{8})\s.*
and then a replacement string: \1.
NOTE: You might need to double escape each backslash if you are passing the expression as a string, so you might need to use:
Start\\s+([0-9]{8})\\s.*
EDIT: You can use the following statement:
SELECT regexp_replace('Start 20130918 14:35:00','Start\s+([0-9]{8})\s.*','\1')
and here is an SQL Fiddle Demo

re2 does not seem to give correct results for some patterns when compared to pcre

I was trying to use both pcre and re2 and I came up with the following observation.
When I give the string as
"ab cd"
and the pattern as
"^[^c]"
re2 returns NO MATCH but its actually a match.
That is to say when I type this RE2::FullMatch("ab cd", RE2("^[^c]")) I get FAIL/No Match.
Please let me know if I am going wrong somewhere or what is the problem?
RE2::FullMatch matches the entire string, like Jerry says.
There are two basic operators: RE2::FullMatch requires the regexp to
match the entire input text, and RE2::PartialMatch looks for a match
for a substring of the input text, returning the leftmost-longest
match in POSIX mode and the same match that Perl would have chosen in
Perl mode.
https://code.google.com/p/re2/wiki/CplusplusAPI