如何使用NSRegularExpression查找用泰语书写的单词

swi*_*nub 3 regex nsregularexpression swift

我有一个??????? 用泰语写的单词 - > 如何使用NSRegularExpression来匹配这个单词?我尝试使用确切的单词,但它不起作用.

它甚至没有在像regex101.com这样的网站上工作

这是我的代码(swift版本.但是在swift或obj中的答案很受欢迎).以下代码位于我的playground文件中.我总是变得虚伪,永远不会真实.

let labelString = "???????"
let regex = try NSRegularExpression(pattern: "???????", options: [])
let rangeOfFirstMatch = regex.rangeOfFirstMatchInString(labelString, options:.ReportProgress, range:NSRange(location: 0, length: labelString.characters.count))
if (!NSEqualRanges(rangeOfFirstMatch, NSRange(location: NSNotFound, length: 0))) {
    print(true)
} else {
    print(false)
}
Run Code Online (Sandbox Code Playgroud)

如果我用"man"这个词替换文本.我总是如此

OOP*_*Per 6

这个漏洞存在于:

NSRange(location: 0, length: labelString.characters.count)
Run Code Online (Sandbox Code Playgroud)

NSRegularExpression 使用基于UTF-16的计数和偏移,因此您需要传递包含基于UTF-16的位置和长度的范围.

尝试更改包含NSRange此内容的行:

let rangeOfFirstMatch = regex.rangeOfFirstMatchInString(labelString,
    options:.ReportProgress,
    range:NSRange(location: 0, length: labelString.utf16.count))
Run Code Online (Sandbox Code Playgroud)

我更喜欢这种表示法(功能相当):

let rangeOfFirstMatch = regex.rangeOfFirstMatchInString(labelString,
    options:.ReportProgress,
    range:NSRange(0..<labelString.utf16.count))
Run Code Online (Sandbox Code Playgroud)

(我不确定,但你真的需要.ReportProgress吗?)