Sample code for 30+ languages & platforms
React Native Requires Chilkat v11.7.0+

Search a PDF with a Regular Expression

See more PDF Text Extraction Examples

Demonstrates searching a PDF with a regular expression (regex: true), limiting the number of results (maxResults), and matching whole words only (wholeWord).

Chilkat React Native Downloads

React Native
import { JsonObject, Pdf } from '@chilkat/react-native'

function chilkatExample() {
  // This example requires the Chilkat API to have been previously unlocked.
  // See Global Unlock Sample for sample code.

  // The PDF used in this example is available at order_records.pdf

  const pdf = new Pdf();
  try {
    pdf.loadFile('qa_data/pdf/order_records.pdf');
  } catch {
    console.log(pdf.lastErrorText);
    return;
  }

  const json = new JsonObject();
  const jsonOut = new JsonObject();

  // Find every order number.  With regex set to true, the query is a regular expression.
  json.updateString('query', 'ORD-[0-9]{4}-[0-9]{4}');
  json.updateBool('regex', true);
  // We only want the matched text, so no context is needed.
  json.updateInt('context', 0);

  try {
    pdf.extractText('search', json, jsonOut);
  } catch {
    console.log(pdf.lastErrorText);
    return;
  }

  console.log(`Order numbers found: ${jsonOut.intOf('count')}`);
  let i = 0;
  let countI = jsonOut.sizeOfArray('matches');
  while (i < countI) {
    jsonOut.i = i;
    console.log(jsonOut.stringOf('matches[i].text'));
    i++;
  }

  // Find the e-mail addresses, but stop after the first three.
  json.updateString('query', '[a-z0-9._]+@[a-z]+[.][a-z]+');
  json.updateInt('maxResults', 3);
  try {
    pdf.extractText('search', json, jsonOut);
  } catch {
    console.log(pdf.lastErrorText);
    return;
  }

  console.log('First three e-mail addresses:');
  i = 0;
  countI = jsonOut.sizeOfArray('matches');
  while (i < countI) {
    jsonOut.i = i;
    console.log(jsonOut.stringOf('matches[i].text'));
    i++;
  }

  // wholeWord: true matches only whole words.  The word "cat" appears once in the PDF,
  // but it is also inside "catalog" and "category".
  json.deleteMember('maxResults');
  json.updateBool('regex', false);
  json.updateString('query', 'cat');
  try {
    pdf.extractText('search', json, jsonOut);
  } catch {
    console.log(pdf.lastErrorText);
    return;
  }

  console.log(`Occurrences of cat (any): ${jsonOut.intOf('count')}`);

  json.updateBool('wholeWord', true);
  try {
    pdf.extractText('search', json, jsonOut);
  } catch {
    console.log(pdf.lastErrorText);
    return;
  }

  console.log(`Occurrences of cat (whole word): ${jsonOut.intOf('count')}`);

  // Sample output:

  // Order numbers found: 9
  // ORD-2026-0301
  // ORD-2026-0302
  // ORD-2026-0303
  // ORD-2026-0304
  // ORD-2026-0305
  // ORD-2026-0306
  // ORD-2026-0307
  // ORD-2026-0308
  // ORD-2026-0307
  // First three e-mail addresses:
  // alice.moore@example.com
  // bkumar@example.org
  // carla@example.net
  // Occurrences of cat (any): 3
  // Occurrences of cat (whole word): 1
}