C Library Functions  - amatch (3)

NAME

amatch(3f) - [M_MATCH] look for pattern matching regular expression; returns its location (LICENSE:PD)

CONTENTS

Synopsis
Description
Options
Returns
Example
See Also
Diagnostics
Author
Reference
License

SYNOPSIS

loc = amatch(line, from, pat)

    character(len=*),intent(in) :: line
    integer,intent(in)          :: from
    character                   :: pat(MAXPAT)
    integer                     :: loc

DESCRIPTION

AMATCH scans LINE starting at location FROM, looking for a pattern which matches the regular expression coded in PAT. If the pattern is found, its starting location in LINE is returned. If the pattern is not found, AMATCH returns 0.

The regular expression in PAT must have been previously encoded by GETPAT(3f) or MAKPAT(3f). (For a complete description of regular expressions, see the manpage for M_match.)

AMATCH(3f) is a special-purpose version of MATCH(3f), which should be used in most cases.

OPTIONS

LINE input line to scan
FROM beginning location to start scan from
PAT coded regular expression encoded by GETPAT(3f) or MAKPAT(3f)

RETURNS

LOC returns location match was found or zero (0) if no match remains

EXAMPLE

Sample program:

    program demo_amatch
    use :: M_match, only : getpat, amatch
    use :: M_match, only : MAXPAT, MAXARG, MAXLINE, MAXTAGS, YES, ERR
    implicit none
    ! find _ find patterns in text
    integer                      :: pat(MAXPAT)
    character(len=MAXARG-1)      :: argument
    integer                      :: stat
    integer                      :: ios
    integer                      :: len_arg
    integer                      :: loc
    integer                      :: ii
    character(len=MAXLINE-2)     :: line
    call get_command_argument(1, argument,status=stat,length=len_arg)
    if(stat.ne.0.or.argument.eq.’’)then
       write(*,*)"usage: find pattern."
    elseif(getpat(argument(:len_arg), pat) .eq. ERR) then
       write(*,*)"illegal pattern."
    else
       INFINITE: do
          read(*,’(a)’,iostat=ios)line
          if(ios.ne.0)exit
          loc = amatch(trim(line), 1, pat) ! returns location/0
          if(loc.gt.0)then ! matched; if no match, loc is returned as 0
             write(*,’(*(a))’)trim(line)
          endif
       enddo INFINITE
    endif
    end program demo_amatch

SEE ALSO

match, getpat, makpat

DIAGNOSTICS

None

AUTHOR

John S. Urban

REFERENCE

"Software Tools" by Kernighan and Plauger , 1976

LICENSE

Public Domain


Nemo Release 3.1 amatch (3) July 22, 2023
Generated by manServer 1.08 from ccbbda6c-8921-4475-8a92-ff5f4e5f5f59 using man macros.