unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* Regexp to find second of three words
@ 2006-08-07  0:51 Tim Johnson
  2006-08-07 17:27 ` Eric Hanchrow
       [not found] ` <mailman.4958.1154972303.9609.help-gnu-emacs@gnu.org>
  0 siblings, 2 replies; 4+ messages in thread
From: Tim Johnson @ 2006-08-07  0:51 UTC (permalink / raw)


Hello:
I've constructed a regexp to use with imenu.
(note: this mailer is probably going to wrap it)
"set[ ]+'[A-Za-z0-9*-_.]+[
]\\(d\\(?:ef\\|oes\\)\\|func\\(?:tion\\)?\\|has\\|lfunc\\|sub\\)\\>"

My goal is to capture from the following example
set 'printf function
     printf
but the regex is really picking up 
  function

I'd appreciate any help on correcting this.
Thanks
tim

-- 
Tim Johnson <tim@johnsons-web.com>
      http://www.alaska-internet-solutions.com

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Regexp to find second of three words
  2006-08-07  0:51 Regexp to find second of three words Tim Johnson
@ 2006-08-07 17:27 ` Eric Hanchrow
       [not found] ` <mailman.4958.1154972303.9609.help-gnu-emacs@gnu.org>
  1 sibling, 0 replies; 4+ messages in thread
From: Eric Hanchrow @ 2006-08-07 17:27 UTC (permalink / raw)


I probably misunderstand what you're trying to do with the stuff that
begins with \\(d\\(?:ef, but I imagine you'll be able to correct what
I've got.

(let ((p (rx "set"
             (one-or-more space) "'" (group (one-or-more (or alnum (any "*-_."))))
             (one-or-more space) (or "def" "does" "func" "function" "has" "lfinc" "sub")))
      (input "set 'printf function"))

  (string-match p input)
  (match-string 1 input))

-- 
Rarely do we find men who willingly engage in hard, solid
thinking.  There is an almost universal quest for easy answers
and half-baked solutions.  Nothing pains some people more
than having to think.
        -- Martin Luther King, Jr.
        from "Strength to Love," 1963.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Regexp to find second of three words
       [not found] ` <mailman.4958.1154972303.9609.help-gnu-emacs@gnu.org>
@ 2006-08-08 15:51   ` Tim Johnson
  2006-08-09 14:22     ` Eric Hanchrow
  0 siblings, 1 reply; 4+ messages in thread
From: Tim Johnson @ 2006-08-08 15:51 UTC (permalink / raw)


On 2006-08-07, Eric Hanchrow <offby1@blarg.net> wrote:
Hi Eric:
In rebol, which has some lispish features, subroutines are values, not
immutable parts of the language syntax. And can have different
rules (think pascal, => function vs. procedure)

And a subroutine can be created by the 'set function
as in 
set 'printf def[ ; arguments
   ][;code here. variables are automatically local
   ]
or
set 'printf function[ ; arguments
  ][; local variable declared here and initialized to 'none
  ][;code here
  ]

I solved this after getting away from the computer for a while. :-)
(defconst rebol-find-set-function-regexp  
          (concat "set[ ]+'\\(\\<[A-Za-z0-9*-_.]+\\)[ ]\\(" 
                           ;;   ^ word boundary
                  rebol-function-names-regexp "\\)\\>")
          "Regexp to find functions defined by the 'set function.")
;; by placing a word boundary before the character class

> I probably misunderstand what you're trying to do with the stuff that
> begins with \\(d\\(?:ef, but I imagine you'll be able to correct what
               created by regexp-opt
> I've got.
>
> (let ((p (rx "set"
>              (one-or-more space) "'" (group (one-or-more (or alnum (any "*-_."))))
>              (one-or-more space) (or "def" "does" "func" "function" "has" "lfinc" "sub")))
>       (input "set 'printf function"))
>
>   (string-match p input)
>   (match-string 1 input))

 Very interesting. This is a very different approach. I will have to try to
 absorb it. I think I am about to be enlighted.

 Thanks very much for that example!
 cheers
 tim
 
-- 
Tim Johnson <tim@johnsons-web.com>
      http://www.alaska-internet-solutions.com

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Regexp to find second of three words
  2006-08-08 15:51   ` Tim Johnson
@ 2006-08-09 14:22     ` Eric Hanchrow
  0 siblings, 0 replies; 4+ messages in thread
From: Eric Hanchrow @ 2006-08-09 14:22 UTC (permalink / raw)



    > (let ((p (rx "set"
    >              (one-or-more space) "'" (group (one-or-more (or alnum (any "*-_."))))
    >              (one-or-more space) (or "def" "does" "func" "function" "has" "lfinc" "sub")))
    >       (input "set 'printf function"))
    >
    >   (string-match p input)
    >   (match-string 1 input))

     Very interesting.  This is a very different approach.  

Not really.  The only difference is the syntax.

-- 
"New York Minute" is a textbook example of a film created as
a "vehicle" but without any ideas about where the vehicle should
go.
        -- Roger Ebert

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2006-08-09 14:22 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-08-07  0:51 Regexp to find second of three words Tim Johnson
2006-08-07 17:27 ` Eric Hanchrow
     [not found] ` <mailman.4958.1154972303.9609.help-gnu-emacs@gnu.org>
2006-08-08 15:51   ` Tim Johnson
2006-08-09 14:22     ` Eric Hanchrow

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).