One Logo Pool Ball
RegexBuilder · IOS API REFERENCE

Reference

struct · iOS 16.0+ · SDK 27.1

struct Reference<Capture>

A reference to a captured portion of a regular expression. You can use a `Reference` to access a regular expression, both during the matching process and after a capture has been successful. In this example, the `kind` reference captures either `"CREDIT"` or `"DEBIT"` at the beginning of a line. Later in the regular expression, the presence of `kind` matches the same substring that was captured previously at the end of the line. let kindRef = Reference(Substring.self) let kindRegex = ChoiceOf { "CREDIT" "DEBIT" } let transactionRegex = Regex { Anchor.startOfLine Capture(kindRegex, as: kindRef) OneOrMore(.anyNonNewline) kindRef Anchor.endOfLine } let validTransaction = "CREDIT 109912311421 Payroll $69.73 CREDIT" let invalidTransaction = "DEBIT 00522142123 Expense $5.17 CREDIT" print(validTransaction.contains(transactionRegex)) // Prints "true" print(invalidTransaction.contains(transactionRegex)) // Prints "false" Any reference that is used for matching must be captured elsewhere in the `Regex` block. You can use a reference for matching before it is captured; in that case, the reference will not match until it has previously been captured. To access the captured "transaction kind", you can use the `kind` reference to subscript a `Regex.Match` instance: if let match = validTransaction.firstMatch(of: transactionRegex) { print(match[kindRef]) } // Prints "CREDIT" To use a `Reference` to capture a transformed value, include a `transform` closure when capturing. struct Transaction { var id: UInt64 } let transactionRef = Reference(Transaction.self) let transactionIDRegex = Regex { Capture(kindRegex, as: kindRef) OneOrMore(.whitespace) TryCapture(as: transactionRef) { OneOrMore(.digit) } transform: { str in UInt64(str).map(Transaction.init(id:)) } OneOrMore(.anyNonNewline) kindRef Anchor.endOfLine } if let match = validTransaction.firstMatch(of: transactionIDRegex) { print(match[transactionRef]) } // Prints "Transaction(id: 109912311421)"

Members (0)

This type has no directly callable members in this snapshot. See the framework’s skipped declarations for unsupported APIs.

Skipped declarations

No declarations were skipped in this snapshot.

All RegexBuilder types →