On 31 August 2017 at 11:06, Gregrs <gre...@fastmail.co.uk> wrote:

> Hi Gianmaria,
>
> On Wed, Aug 30, 2017 at 09:58:52PM +0100, Gregrs wrote:
>
> The below expression (minus the quotation marks) seems to work for notes
>> and chords without any articulation etc. attached. I've used Vim regex
>> syntax so \@<= is a positive lookbehind to match the space before it and
>> \@= is a positive lookahead to match the space before it. It also selects
>> the whitespace in between and after notes/chords.
>>
>> ' \@<=<*\([a-g][',]*[1-8]* *\)\+>* \@= *'
>>
>
> I constructed the above expression in a hurry and forgot about
> accidentals.


:)


> I've put together a few more expressions below that might be useful (using
> the Italian accidentals language) in a couple of regex flavours: Vim and
> Python (which I think is used by Frescobaldi, for example). They still
> don't match any attached articulation etc.
>

For the articulation is not a problem, at the moment I don't need it. I'm
writing some c# classes to help me generating lilypond source files. The
music I want to generate are technical exercises for accordion. I asked for
the regex because I thought that maybe something already existed. Thanks a
lot for you help!


> Without getting more complex, some of the expressions will match things in
> a LilyPond source file that aren't notes, such as words in a markup that
> look like they could be notes. Also if you're trying to verify that matches
> are in fact valid notes, you might want to be a bit more strict than I have
> been e.g. with possible durations.
>

Not a problem. Your regex would be an excellent starting point. I rarely
use regex so I'm not good with it.

If I will improve your regex, I will send them here so others can take
advantage.


> Hope they're useful though. You might find this site useful for trying
> things out: http://regex101.com


Yes, it's the site I use :)

Notes
> Vim: [a-g]\([ie]s\)\{0,2}[',]*[1-8]*
> Python: [a-g]([ie]s){0,2}[',]*[1-8]*
>
> Notes bordered by space or beginning/end of line
> Vim: \( \|^\)\@<=[a-g]\([ie]s\)\{0,2}[',]*[1-8]*\( \|$\)\@=
> Python: ((?<= )|(?<=^))[a-g]([ie]s){0,2}[',]*[1-8]*(?=( |$))
>
> Chords
> Vim: <\([a-g]\([ie]s\)\{0,2}[',]* *\)\+>[1-8]*
> Python: <([a-g]([ie]s){0,2}[',]* *)+>[1-8]*
>
> Chords bordered by space or beginning/end of line
> Vim: \( \|^\)\@<=<\([a-g]\([ie]s\)\{0,2}[',]* *\)\+>[1-8]*\( \|$\)\@=
> Python: ((?<= )|(?<=^))<([a-g]([ie]s){0,2}[',]* *)+>[1-8]*(?=( |$))
>
> Notes or chords bordered by space or beginning/end of line
> Vim: \( 
> \|^\)\@<=\([a-g]\([ie]s\)\{0,2}[',]*[1-8]*\|<\([a-g]\([ie]s\)\{0,2}[',]*
> *\)\+>[1-8]*\)\( \|$\)\@=
> Python: ((?<= )|(?<=^))([a-g]([ie]s){0,2}[',]*[1-8]*|<([a-g]([ie]s){0,2}[',]*
> *)+>[1-8]*)(?=( |$))
>

Thanks a lot Greg!!!!
Ciao, g.
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to