import Foundation
let pattern = #"(?P<core1>(?i)[A-Z0-9]+)[\s]?((?i)out of|of|\/)[\s]?(?P<core2>(?i)[A-Z0-9]+)[\s]?(?:(?i)core[s]?|needle core[s]?)"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = ##"""
ajnxaslndsa;ndaJDASDNsadnKDNadk;NADK'nadkAnaskdmaskdnajfbajfnakdnaj;knasjnakdna;jkdna;nda;dna;kdnas;dkns
so as sadasldka aldaskl . asdas asd 5,400 cgy
40.00 cgy
4 cgy
gleason score 6/10(4+3), = 7 )
1.1- 0.6,df
2,4-3,6 asdf 4+5+6
gleason's pattern: 2+3, 5
gleason score = 5(2+3)
score 1+2, (score 7)
gleason Dec 2011-23 jan
500,000.012 cgy sdfsfsodm sdfsd f
sdfsd afdas. s adasas dasd as
asdasdaskd askdm askdmas'ljdnas;das.ndaskjndajkndWJDNAksz
(?P<core1>(?i)[A-Z0-9]+)[\s]?((?i)out of|of|\/)[\s]?(?P<core2>(?i)[A-Z0-9]+)[\s]?(?:(?i)core[s]?|needle core[s]?)
(?P<core1>(?i)[A-Z0-9]+)[\s]?((?i)core[s]? out of)[\s]?(?P<core2>(?i)[A-Z0-9]+)
(?:(?i)involving)[\s]?(?P<core1>(?i)[A-Z0-9]+)[\s]?(?:(?i)core[s]?|needle core[s]?)
1 of 3 core
one of three cores
involving 1/2 cores
involving five of six cores
two of the cores
one of multiple cores
1 of multiple cores
two of 4 cores
5 of six cores
(1/8 needle cores)
(3/7 cores)
one out of six cores
two cores out of two
1 core out of 2
involving 1 core
involving two cores
gleason score 9, 4+5=9/10,
PSA = 27.60, 8 specimens
{0,1SDf00}
10% 20%
(?<=(?i)gleason)[\w\s\p{P}\=]*[^0-9\.\+]*\s*\K(\d)\s*\+\s*(\d)(?=\D)
(?<=(?i)gleason)[\w\s\p{P}\=]*[^0-9\.\+]*\s*\K(\d)\s*\+\s*(\d)(?=\D)
(?<=(?i)gleason)[\w\s\p{P}\=]*[^0-9\.\-]*\s*\K(\d)\s*\-\s*(\d)(?=\D\-)
(?<=(?i)gleason)[\w\s\p{P}\=]*[^0-9\.\,\#]*\s*\K(\d)\s*\,\s*(\d)(?=\D)
[\w\s\p{P}\=]*[^0-9\.\+]*\s*\K(\d)\s*\+\s*(\d)(?=\D)
[\w\s\p{P}\=]*[^0-9\.\-]*\s*\K(\d)\s*\+\s*(\d)(?=\D\-)
(?<=[\\s])\\s*|^\\s+|\\s+$
"""##
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