Prevalent Exact String-Matching Algorithms in Natural Language Processing: A Review