我在回答where are you
正则表达式的下面的代码中,这可能是w r u
等等。
我输入了how r u
,正则表达式会将其理解为w r u
,这在实际上是不正确的,如何解决?
val regEx = """((where|were|w)\s*(are|r)\s*(you|u)(?-i))""".toRegex()
fun main(args: Array<String>) {
val matchResult = regEx.find("how r u")
println("Hello, world!: ${matchResult?.value.orEmpty()}")
}
答案 0 :(得分:0)
选项1
(^|\s+)
您可以使用行^
char的开头来获得更好的匹配器。如果你将它与像(^|\s+)
这样的空白匹配器结合使用,你一定要确保只得到(where|were|w)
(^|\s+)(where|were|w)\s*(are|r)\s*(you|u)(?-i)
或
(^|\s+)(where|were|w)\s*(are|r)\s*(you|u)\s+(?-i)
请参阅https://regex101.com/r/xyjrO4/1
选项2
\b
使用边界\b
一词,请参阅java regex boundaries
\b(where|were|w)\s*(are|r)\s*(you|u)(?-i)
将其完全延伸
\b(where|were|w)\b\s*\b(are|r)\b\s*\b(you|u)\b(?-i)
(这不符合&#34; wru&#34;尽管如此)
或者
((where|were|\bw)\s*(are|r)\s*(you|u)(?-i))