Updated function names, addeed new function 'FindString' that returns the _text_ of the match
This commit is contained in:
		
							
								
								
									
										29
									
								
								matching.go
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								matching.go
									
									
									
									
									
								
							| @@ -138,10 +138,29 @@ func pruneIndices(indices []Match) []Match { | |||||||
| 	return toRet | 	return toRet | ||||||
| } | } | ||||||
|  |  | ||||||
| // findNthMatch finds the 'n'th match of the regex represented by the given start-state, with | // FindString returns a _string_ containing the _text_ of the _leftmost_ match of | ||||||
|  | // the regex, in the given string. The return value will be an empty string in two situations: | ||||||
|  | //  1. No match was found | ||||||
|  | //  2. The match was an empty string | ||||||
|  | func FindString(regex Reg, str string) string { | ||||||
|  | 	match, err := FindNthMatch(regex, str, 1) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return "" | ||||||
|  | 	} | ||||||
|  | 	return str[match[0].startIdx:match[0].endIdx] | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // FindAllString is the 'all' version of FindString. | ||||||
|  | // It returns a _slice of strings_ containing the _text_ of _all_ matches of | ||||||
|  | // the regex, in the given string. | ||||||
|  | //func FindAllString(regex Reg, str []string) []string { | ||||||
|  | // | ||||||
|  | //} | ||||||
|  |  | ||||||
|  | // FindNthMatch finds the 'n'th match of the regex represented by the given start-state, with | ||||||
| // the given string. | // the given string. | ||||||
| // It returns an error (!= nil) if there are fewer than 'n' matches in the string. | // It returns an error (!= nil) if there are fewer than 'n' matches in the string. | ||||||
| func findNthMatch(regex Reg, str string, n int) (Match, error) { | func FindNthMatch(regex Reg, str string, n int) (Match, error) { | ||||||
| 	idx := 0 | 	idx := 0 | ||||||
| 	matchNum := 0 | 	matchNum := 0 | ||||||
| 	str_runes := []rune(str) | 	str_runes := []rune(str) | ||||||
| @@ -160,9 +179,9 @@ func findNthMatch(regex Reg, str string, n int) (Match, error) { | |||||||
| 	return nil, fmt.Errorf("Invalid match index. Too few matches found.") | 	return nil, fmt.Errorf("Invalid match index. Too few matches found.") | ||||||
| } | } | ||||||
|  |  | ||||||
| // findAllMatches tries to find all matches of the regex represented by given start-state, with | // FindAllMatches tries to find all matches of the regex represented by given start-state, with | ||||||
| // the given string | // the given string | ||||||
| func findAllMatches(regex Reg, str string) []Match { | func FindAllMatches(regex Reg, str string) []Match { | ||||||
| 	idx := 0 | 	idx := 0 | ||||||
| 	str_runes := []rune(str) | 	str_runes := []rune(str) | ||||||
| 	var matchFound bool | 	var matchFound bool | ||||||
| @@ -180,7 +199,7 @@ func findAllMatches(regex Reg, str string) []Match { | |||||||
| 	return indices | 	return indices | ||||||
| } | } | ||||||
|  |  | ||||||
| // Helper for findAllMatches. Returns whether it found a match, the | // Helper for FindAllMatches. Returns whether it found a match, the | ||||||
| // first Match it finds, and how far it got into the string ie. where | // first Match it finds, and how far it got into the string ie. where | ||||||
| // the next search should start from. | // the next search should start from. | ||||||
| // | // | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user