匹配 "com.project.name" 但不包含其他内容
Match "com.project.name" but not when it contains something else
我有以下代码:
var i = "test"
和
var i = "com.project.name.test"
print("something else")
fatalError("some error")
我有一个正则表达式:
"((?!com\.project\.name).)*"
匹配任何不包含 "com.project.name"
.
的字符串
但是,我想修改它以仍然具有上述条件,但如果该行包含 print\(.*?\)
和 fatalError\(.*?\)
。
我为什么要这样做?因为我只能将 regex 用于 SwiftLint 自定义规则,而现在我的 regex 很贪婪并且匹配项目中开发人员忘记本地化的每个字符串..
我试过的:
"((?!com\.project\.name).)*(?!print)(?!fatalError)"
但它不起作用,而是与原始表达式匹配。
您可以将此正则表达式与否定先行断言一起使用:
^(?!.*(?:com\.project\.name|print\(|fatalError\()).*
这个否定的先行断言使用交替来使输入中任意位置的 3 个不同匹配项的匹配失败:
com\.project\.name
print\(
fatalError\(
我有以下代码:
var i = "test"
和
var i = "com.project.name.test"
print("something else")
fatalError("some error")
我有一个正则表达式:
"((?!com\.project\.name).)*"
匹配任何不包含 "com.project.name"
.
但是,我想修改它以仍然具有上述条件,但如果该行包含 print\(.*?\)
和 fatalError\(.*?\)
。
我为什么要这样做?因为我只能将 regex 用于 SwiftLint 自定义规则,而现在我的 regex 很贪婪并且匹配项目中开发人员忘记本地化的每个字符串..
我试过的:
"((?!com\.project\.name).)*(?!print)(?!fatalError)"
但它不起作用,而是与原始表达式匹配。
您可以将此正则表达式与否定先行断言一起使用:
^(?!.*(?:com\.project\.name|print\(|fatalError\()).*
这个否定的先行断言使用交替来使输入中任意位置的 3 个不同匹配项的匹配失败:
com\.project\.name
print\(
fatalError\(