Ruby Regex: Match Until First Occurance of Character -


i have file lines vary in format, basic idea this:

- block of text #tag @due(2014-04-20) @done(2014-04-22) 

for example:

- email john doe #email @due(2014-04-20) @done(2014-04-22) 

the issue #tag , @due date not appear in every entry, like:

- email john doe @done(2014-04-22) 

i'm trying write ruby regex finds item between "- " , first occurrence of either hashtag or @done/@due tag.

i have been trying use groups , ahead, can't seem right when there multiple instances of looking ahead for. using second example string, regex:

/-\s(.*)(?=[#|@])/  

yields result (.*):

email john doe #email @due(2014-04-22) 

is there way can right? thanks!

you're missing ? quantifier make non greedy match. , remove | inside of character class because it's trying match single character in list (#|@) literally.

/-\s(.*?)(?=[#@])/ 

see demo

you don't need positive lookahead here either, match until characters , print result capturing group.

/-\s(.*?)[#@]/ 

you use negation in case.

/-\s([^#@]*)/ 

Comments

Popular posts from this blog

java - Intellij Synchronizing output directories .. -

git - Initial Commit: "fatal: could not create leading directories of ..." -