Difference between revisions of "macOS NSString Regular Expressions"

From Free Pascal wiki
Jump to navigationJump to search
m (Relocate Output to correct example)
Line 48: Line 48:
 
End.
 
End.
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
=== Output ===
 +
 +
2021-06-15 21:43:49.049 regex_ex1[23182:177970] Search string: I have 43 bags of 60 marbles.
 +
2021-06-15 21:43:49.049 regex_ex1[23182:177970] Pattern string: \d+
 +
2021-06-15 21:43:49.049 regex_ex1[23182:177970] Range 1: {7, 2}
 +
2021-06-15 21:43:49.049 regex_ex1[23182:177970] Location: 7
 +
2021-06-15 21:43:49.049 regex_ex1[23182:177970] Length: 2
 +
2021-06-15 21:43:49.049 regex_ex1[23182:177970] Match: 43
 +
2021-06-15 21:43:49.049 regex_ex1[23182:177970] Range 2: {18, 2}
 +
2021-06-15 21:43:49.049 regex_ex1[23182:177970] Location: 18
 +
2021-06-15 21:43:49.049 regex_ex1[23182:177970] Length: 2
 +
2021-06-15 21:43:49.049 regex_ex1[23182:177970] Match: 60
  
 
== Example 2 - replace matched pattern ==
 
== Example 2 - replace matched pattern ==
Line 101: Line 114:
 
End.
 
End.
 
</syntaxhighlight>
 
</syntaxhighlight>
 
=== Output ===
 
 
2021-06-15 21:43:49.049 regex_ex1[23182:177970] Search string: I have 43 bags of 60 marbles.
 
2021-06-15 21:43:49.049 regex_ex1[23182:177970] Pattern string: \d+
 
2021-06-15 21:43:49.049 regex_ex1[23182:177970] Range 1: {7, 2}
 
2021-06-15 21:43:49.049 regex_ex1[23182:177970] Location: 7
 
2021-06-15 21:43:49.049 regex_ex1[23182:177970] Length: 2
 
2021-06-15 21:43:49.049 regex_ex1[23182:177970] Match: 43
 
2021-06-15 21:43:49.049 regex_ex1[23182:177970] Range 2: {18, 2}
 
2021-06-15 21:43:49.049 regex_ex1[23182:177970] Location: 18
 
2021-06-15 21:43:49.049 regex_ex1[23182:177970] Length: 2
 
2021-06-15 21:43:49.049 regex_ex1[23182:177970] Match: 60
 
  
 
== See also ==
 
== See also ==

Revision as of 03:37, 16 June 2021

English (en)

macOSlogo.png

This article applies to macOS only.

See also: Multiplatform Programming Guide

Light bulb  Note: Under construction

Example 1 - matching a pattern

Code

Program regex_ex1;

{$mode objfpc}{$H+}
{$modeswitch objectivec2}

Uses
  MacOSAll, CocoaAll, SysUtils;

Var
  srchStr : String;
  patnStr : String;
  i: NSRange;
  j: NSRange;

Begin
  srchStr := 'I have 43 bags of 60 marbles.';
  patnStr := '\d+';

  // Find first match
  i := NSStr(srchStr).rangeOfString_options_range(NSStr(patnStr), (NSRegularExpressionSearch or NSCaseInsensitiveSearch), NSMakeRange(0, srchStr.Length));

  // Find second match
  j := NSStr(srchStr).rangeOfString_options_range(NSStr(patnStr), (NSRegularExpressionSearch or NSCaseInsensitiveSearch), NSMakeRange(i.location + i.length, srchStr.Length - (i.location + i.length)));

  // Output
  NSLog(NSStr('Search string: %@'), NSStr(srchStr));
  NSLog(NSStr('Pattern string: %@'), NSStr(patnStr));

  NSLog(NSStr('Range 1: %@'), NSStringFromRange(i));
  NSLog(NSStr('Location: %d'), i.location);
  NSLog(NSStr('Length: %d'), i.length);
  NSLog(NSStr('Match: %@'), NSStr(srchStr).substringWithRange(i));

  NSLog(NSStr('Range 2: %@'), NSStringFromRange(j));
  NSLog(NSStr('Location: %d'), j.location);
  NSLog(NSStr('Length: %d'), j.length);
  NSLog(NSStr('Match: %@'), NSStr(srchStr).substringWithRange(j));
End.

Output

2021-06-15 21:43:49.049 regex_ex1[23182:177970] Search string: I have 43 bags of 60 marbles.
2021-06-15 21:43:49.049 regex_ex1[23182:177970] Pattern string: \d+
2021-06-15 21:43:49.049 regex_ex1[23182:177970] Range 1: {7, 2}
2021-06-15 21:43:49.049 regex_ex1[23182:177970] Location: 7
2021-06-15 21:43:49.049 regex_ex1[23182:177970] Length: 2
2021-06-15 21:43:49.049 regex_ex1[23182:177970] Match: 43
2021-06-15 21:43:49.049 regex_ex1[23182:177970] Range 2: {18, 2}
2021-06-15 21:43:49.049 regex_ex1[23182:177970] Location: 18
2021-06-15 21:43:49.049 regex_ex1[23182:177970] Length: 2
2021-06-15 21:43:49.049 regex_ex1[23182:177970] Match: 60

Example 2 - replace matched pattern

Code

Program regex_2;
  
{$mode objfpc}{$H+}
{$modeswitch objectivec2}

Uses
  MacOSAll, CocoaAll, SysUtils;

Var
  srchStr : NSString;
  patnStr : NSString;
  i: NSRange;
  j: NSRange;

Begin
  srchStr := NSStr('I have 43 bags of 60 marbles.');
  patnStr := NSStr('\d+');

  // Find first match
  i := srchStr.rangeOfString_options_range(patnStr, NSRegularExpressionSearch, NSMakeRange(0, srchStr.Length));

  // Do replacement
  srchStr := srchStr.stringByReplacingOccurrencesOfString_withString(NSStr('43'), NSStr('forty-three'));

  // Find second match
  j := srchStr.rangeOfString_options_range(patnStr, NSRegularExpressionSearch, NSMakeRange(i.location + i.length, srchStr.Length - (i.location + i.length)));

  // Do replacement
  srchStr := srchStr.stringByReplacingOccurrencesOfString_withString(NSStr('60'), NSStr('sixty'));

  // Output
  NSLog(NSStr('Search string: %@'), srchStr);
  NSLog(NSStr('Pattern string: %@'), patnStr);

  NSLog(NSStr('Range 1: %@'), NSStringFromRange(i));
  NSLog(NSStr('Location: %d'), i.location);
  NSLog(NSStr('Length: %d'), i.length);
  NSLog(NSStr('Match: %@'), srchStr.substringWithRange(i));

  NSLog(NSStr('Range 2: %@'), NSStringFromRange(j));
  NSLog(NSStr('Location: %d'), j.location);
  NSLog(NSStr('Length: %d'), j.length);
  NSLog(NSStr('Match: %@'), srchStr.substringWithRange(j));

  NSLog(NSStr('Result: %@'), srchStr);
End.

See also

External links