import Foundation
let pattern = #"Zweckfreibaum"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
//************* Russel **************
//++++++++++++ App.jsx ++++++++++++++
import React from "react";
import { DragonList } from "./DragonList";
import dragons from './dragons';
export default function App() {7
const [minAge, setMinAge] = React.useState(17);
const [type, setType] = React.useState('All');
console.log(dragons);
return (
<div>
<h1>The Dragons:</h1>
<DragonList dragons={dragons} minAge={minAge} type={type}/>
<span>Minimum Age: {minAge}</span>
<button type="button" onClick={ () => setMinAge(age => age - 1) }>
Show younger dragons
</button>
<button type="button" onClick={ () => setMinAge(age => age + 1) }>
Show older dragons
</button>
<button type="button" onClick={ () => setType('All') }>
Show all dragons
</button>
<button type="button" onClick={ () => setType('Fire') }>
Show fire dragons
</button>
</div>
)
}
//++++++++++++++ Main.jsx ++++++++++++++++++
import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import './index.css'
import GiggnGoggn from './App.jsx'
createRoot(document.getElementById('root')).render(
<StrictMode>
<GiggnGoggn />
</StrictMode>,
)
//++++++++++++++ dragon.js++++++++++++++
export default dragons = [
{
name: "Skril",
type: "Lightning",
age: 16,
},
{
name: "Nightmare",
type: "Fire",
age: 22,
},
{
name: "Deadly Nadder",
type: "Magnesium",
age: 16,
},
{
name:"Night Fury",
type: "Plasma",
age: 18,
},
];
//++++++++++++++++++++++ DragonList.jsx+++++++++++++++++++
import { Dragon } from "./Dragon";
export function DragonList({dragons, minAge, type}) {
const filteredDragons = dragons.filter(
dragon => (dragon.age >= minAge) && (type === 'All' ? true : dragon.type === type)
);
console.log('filteredDragons', {filteredDragons});
return (
<div>
{filteredDragons.map((dragon, index) => <Dragon key={index} {...dragon} /> )}
</div>
);
}
//++++++++++++++++++ dragon.jsx +++++++++++++++++++++++++
export function Dragon({ name, type, age }) {
return (
<div>
<h2>{name}</h2>
<p>Type: {type}</p>
<p>Age: {age} years</p>
</div>
);
}
"""#
let stringRange = NSRange(location: 0, length: testString.utf16.count)
let matches = regex.matches(in: testString, range: stringRange)
var result: [[String]] = []
for match in matches {
var groups: [String] = []
for rangeIndex in 1 ..< match.numberOfRanges {
let nsRange = match.range(at: rangeIndex)
guard !NSEqualRanges(nsRange, NSMakeRange(NSNotFound, 0)) else { continue }
let string = (testString as NSString).substring(with: nsRange)
groups.append(string)
}
if !groups.isEmpty {
result.append(groups)
}
}
print(result)
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Swift 5.2, please visit: https://developer.apple.com/documentation/foundation/nsregularexpression