Regex -- Replace "-*?\n" with ""

B

Brent

Take this string:

"----------------------------------------
"

(i.e., hyphens followed by a newline )

I thought I could match it simply with this Regex:

"-*?\n"

(my interpretation: one or more of "-" followed by a newline)

But when I run it, it seems to match all newlines, regardless of being
preceded by the "-". I know I'm missing something. Any ideas of how to
do this match properly?

Many thanks.

--Brent
 
T

Tom.PesterDELETETHISSS

Hi Brent,

Starting a newline is \r\n on dos/windows systems.

So if you use
"-*?\r\n"
on
"----------------------------------------
"
"----------------------------------------
"

It will match 2 times.

A caution is maybe in order here. If you use a lazy non greedy quantifier
it will match the shortest string possible.

So if you let the regex
-*?
Loose on 5 times a dash
-----
The result will be 6 *empty* matches : m-m-m-m-m-m

Whe empty? bacause the star in your regex allows 0 occurences. So the shortest
string possible is the empty string.

Compare this with the regex
-*?a
on
-----a

Now you want an a to be at the end of a match so the shortest string possible
is now : -----a
This is the whole original input string and this is the only match.

You say you want a windows newline so your doing fine.


Let me know if you have any more questions..

Cheers,
Tom Pester
 
B

Brent

Thanks Tom!

I hacked around some more with this stuff, and it turns out that
".*?--+\n" works. Some of the "----" strings were preceded by spaces, so
this seems to be a better, uh, match.

And, yes, your reply does help.

Oh...the text is being sucked in over HTTP directly from an Apache
server, so the \n seems to be appropriate.

Tricky things, these regexes!

--Brent
 
B

Bruce Barker

actually http 1.1 switched to "\r\n", so the apache server should serve the
html the samer way.

-- bruce (sqlwork.com)
 
J

jasonkester

Try:

-+\r\n

Not sure what you were trying to accomplish with your *?
(literally:zero or more, possibly.) That would always match any new
line, assuming you used \r or \r\n as your newline character.


Jason Kester
Expat Software Consulting Services
http://www.expatsoftware.com/
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads

RegEx 0
My regex kung-fu is not strong =( 0
Replace /n with a <br> help please 13
regex question 7
Regex replace 1
Issue with textbox script? 0
help with perl search/replace regex 3
Replace various regex 8

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top