|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
[Note: parts of this message were removed to make it a legal post.]
Hello Suppose I have a string with some repeating patterns: string = "some miscellaneous text [sdfsdf.wer], some more miscellaneous text [vbnfg.thy], and yet more text [jkhjkhjk.345]" I want catch all instances of "[.*]" in this line - without the square brackets. - in the above example that would be 'sdfsdf.wer', 'vbnfg.thy', and 'jkhjkhjk.345'. What regular expression would pull each instance of "[.*]" into a separate element in an array? my_match=string.match('\[(\w+\.\w{3}\]') This only catches the first match, and ignores the second and third. grateful for any . Petr. |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
Petr Dupovnik wrote:
> What regular expression would pull each instance of "[.*]" into a separate > element in an array? "some miscellaneous text [sdfsdf.wer], some more miscellaneous text [vbnfg.thy], and yet more text [jkhjkhjk.345]".scan(/\[[^\]]+\]/).flatten => ["[sdfsdf.wer]", "[vbnfg.thy]", "[jkhjkhjk.345]"] HTH, Sebastian -- Jabber: sepp2k@jabber.org ICQ: 205544826 |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
On Wed, Jun 18, 2008 at 3:05 PM, Petr Dupovnik <petrdupovnik@gmail.com> wrote:
> Hello > > Suppose I have a string with some repeating patterns: > > string = "some miscellaneous text [sdfsdf.wer], some more miscellaneous text > [vbnfg.thy], and yet more text [jkhjkhjk.345]" > > I want catch all instances of "[.*]" in this line - without the square > brackets. - in the above example that would be 'sdfsdf.wer', 'vbnfg.thy', > and 'jkhjkhjk.345'. string.scan /(\[[^\]]*\])/ would do the trick ..although you could also use split with that same regex if you needed the rest of the data for something. scan is only keeping the saved part of the regex, as marked by our parenthesies Inside of them is the slightly ugly statement \[[^\]*]\] since brackets are special in regexs, we have to escape them first, hence the \[ and \] stuff So it matches one bracket, [, and anything that isn't another bracket, ], followed by one bracket, ]. Does that make sense? --Kyle |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
[Note: parts of this message were removed to make it a legal post.]
Perfect. Thanks Kyle & Sebastian. On Wed, Jun 18, 2008 at 4:17 PM, Kyle Schmitt <kyleaschmitt@gmail.com> wrote: > On Wed, Jun 18, 2008 at 3:05 PM, Petr Dupovnik <petrdupovnik@gmail.com> > wrote: > > Hello > > > > Suppose I have a string with some repeating patterns: > > > > string = "some miscellaneous text [sdfsdf.wer], some more miscellaneous > text > > [vbnfg.thy], and yet more text [jkhjkhjk.345]" > > > > I want catch all instances of "[.*]" in this line - without the square > > brackets. - in the above example that would be 'sdfsdf.wer', 'vbnfg.thy', > > and 'jkhjkhjk.345'. > string.scan /(\[[^\]]*\])/ > would do the trick > ..although you could also use split with that same regex if you needed > the rest of the data for something. > > scan is only keeping the saved part of the regex, as marked by our > parenthesies > Inside of them is the slightly ugly statement > \[[^\]*]\] > since brackets are special in regexs, we have to escape them first, > hence the \[ and \] stuff > So it matches one bracket, [, and anything that isn't another bracket, > ], followed by one bracket, ]. > > Does that make sense? > > --Kyle > > |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
On Wed, Jun 18, 2008 at 10:15 PM, Sebastian Hungerecker
<sepp2k@googlemail.com> wrote: > Petr Dupovnik wrote: >> What regular expression would pull each instance of "[.*]" into a separate >> element in an array? > > "some miscellaneous text [sdfsdf.wer], some more miscellaneous text > [vbnfg.thy], and yet more text [jkhjkhjk.345]".scan(/\[[^\]]+\]/).flatten > => ["[sdfsdf.wer]", "[vbnfg.thy]", "[jkhjkhjk.345]"] > > HTH, > Sebastian > -- > Jabber: sepp2k@jabber.org > ICQ: 205544826 > > scan( /\[(.*?)\]/ ).flatten is a shorter alternative showing the use of the non greedy Kleene Star "*?" But often it is indeed a good idea to be very explicit in your regular expressions. Cheers Robert -- http://ruby-smalltalk.blogspot.com/ --- As simple as possible, but not simpler. Albert Einstein |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
On Wed, Jun 18, 2008 at 4:09 PM, Robert Dober <robert.dober@gmail.com> wrote:
> But often it is indeed a good idea to be very explicit in your regular > expressions. Often it's a good idea just because it keeps you from using explicit language when debugging your code later.... |
|
![]() |
| Outils de la discussion | |
|
|