amatch(3f) - [M_MATCH] look for pattern matching regular expression; returns its location (LICENSE:PD)
Synopsis
Description
Options
Returns
Examples
See Also
Diagnostics
Author
Reference
License
loc = amatch(line, from, pat)
character(len=*),intent(in) :: line integer,intent(in) :: from character :: pat(MAXPAT) integer :: loc
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.
LINE input line to scan FROM beginning location to start scan from PAT coded regular expression encoded by GETPAT(3f) or MAKPAT(3f)
LOC returns location match was found or zero (0) if no match remains
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
match, getpat, makpat
None
John S. Urban
"Software Tools" by Kernighan and Plauger , 1976
Public Domain
Nemo Release 3.1 | amatch (3) | February 23, 2025 |