正则表达式
说简单也简单, 说复杂当然也有复杂的用法
简单的说: 是记录文本规则的代码
复杂的说: 真对字符串的一门语言
上面都在扯蛋
匹配 不包含 某些字段
的正则
参考博客
stack overflow
^((?!hede).)*$
/^(?!.*?hede).*$/
关键字
简单的话, 其实就是他的一些关键字
和你想要匹配的字符之间的使用
想好好了解的话, 网上很多教程了, 多写一篇也是累赘, 没必要浪费时间.
这里我感觉比较不错的帖子
看这个就行了.
下面就是我在学习中自己记录的一些注意点和应用点了~
使用:
\b: 标记单词的开始和结尾的分隔
更换某些文字时, 可以使用 sublime 来测试正则匹配的情况, 甚至在正则替换后将内容粘贴到需要的地方去, 省去很多时间
1 |
|
关于Swift 使用正则
有些时候 Swift
中, NSRegularExpression
这个类会接收一个String
的 Swift
类型, 但是其内部仍然是使用NSString
, 所使用的 Range 也是根据 NSString
来计算获取的, 不是 Swift
的 String
的长度.
在 Swift4
中, 其标准库提供了一个函数来转换R Range<String.Index>
和 NSRange
虽然不常使用, 但是避免不了有时候会去验证某些字符串. 我们可以定义一下方法
我们可以定义一个用作匹配的函数:
1 | // Swift4 |
以上的验证 example:1
2
3
4let string = "🇩🇪€4€9"
let matched = matches(for: "[0-9]", in: string)
print(matched)
// ["4", "9"]
ref: Swift extract regex matches
为了方便我们也可以给正则表达式做一个封装1
2
3
4
5
6
7
8
9
10
11
12
13
14
15struct RegexHelper {
let regex: NSRegularExpression
init(_ pattern: String) throws {
try regex = NSRegularExpression(pattern: pattern,
options: .CaseInsensitive)
}
func match(input: String) -> Bool {
let matches = regex.matchesInString(input,
options: [],
range: NSMakeRange(0, input.utf16.count))
return matches.count > 0
}
}
可以这么使用:
1 | let mailPattern = |
基于这个封装, 我们可以做一个方便的 operation 函数来方便之后的使用:
1 | infix operator =~ { |
ref: 正则表达式