我正在 Kotlin 中使用 Regex 编写一种方法,检查字符串是否包含一个或多个特定代词(例如“I”、“we”、“you”等)。例如,“我们是一家科技公司”应该是匹配的,“网络是为蜘蛛准备的”不应该是匹配的。
我尝试使用以下代码:
fun main() {
val text = "We are testing!"
val regex = "/\b(i|you|we)\b/g".toRegex()
if (regex.containsMatchIn(text.lowercase())) {
println("match")
} else {
println("no match")
}
}
Run Code Online (Sandbox Code Playgroud)
,但它打印“不匹配”。
Kotlin(和 Java)正则表达式是用字符串文字定义的,而不是正则表达式文字,即当您在模式的/开头和/g(或仅/)末尾添加时,您实际上将它们添加到模式字符串中。
您可以使用以下修复:
val text = "We are testing!"
val regex = """(?i)\b(i|you|we)\b""".toRegex()
if (regex.containsMatchIn(text)) {
println("match")
} else {
println("no match")
}
Run Code Online (Sandbox Code Playgroud)
等于"""(?i)\b(i|you|we)\b""","(?i)\\b(i|you|we)\\b"前者将反斜杠视为文字字符。
请注意,您不需要使用.lowercase(),(?i)不区分大小写修饰符将使匹配不区分大小写。
请参阅在线 Kotlin 演示。
| 归档时间: |
|
| 查看次数: |
4666 次 |
| 最近记录: |