Tag: 正则expression式

groupValues只返回重复模式的最后一次出现

println(Regex(“(A|B)+”).matchEntire(“AB”)!!.groupValues) 打印[AB, B]但我希望结果是[AB, A, B] 。 这是行为吗? 有没有办法获得[AB, A, B] ?

集团捕捉

大家好,我正在努力弄清楚如何使用kotlin正则expression式的组捕获的结果,为我的生活在网上找不到任何东西。 我基本上只是想简单地去掉“k” var line = “4353453555k fgafg 4535k” line.replace(“(\\d*)[k]”.toRegex(), “replace with group capture”) 我想要的结果是: 4353453555 fgafg 4535

正则expression式匹配字符串

我想通过正则expression式提取两个数字“[0-9] +” var str = “ABcDEFG12345DiFKGLSG938SDsFSd” 我想提取的是“12345”和“938”。 但我不知道如何在Kotlin这样做。

SearchView不会在第二个点上调用onQueryTextChange

我的活动有SearchView,应该过滤查询。 我通过onQueryTextListener过滤它。 想法是禁用键入不允许字符,如点,逗号,斜杠等 – 只允许[AZ]这里是代码(我正在使用Kotlin,但它是可读的Java): var shouldQueryChangeBeInvoked = true override fun onCreate(savedInstanceState: Bundle?) { … searchField.setOnQueryTextListener(this) } override fun setSearchQuery(query: String) { shouldQueryChangeBeInvoked = false searchField.setQuery(query, false) shouldQueryChangeBeInvoked = true } override fun onQueryTextChange(newText: String?): Boolean { if (!shouldQueryChangeBeInvoked) { return false } val validQuery = validateQuery(newText) validQuery?.let { setSearchQuery(it) } return false } 例如,我输入“ABC”。 […]

替换第一个正则expression式匹配组而不是第0个

我期待着这一点 val string = “hello , world” val regex = Regex(“””(\s+)[,]”””) println(string.replace(regex, “”)) 导致这样的结果: hello, world 相反,它打印这个: hello world 我看到replacefunction关心整个比赛。 有没有办法只更换第一组而不是第0组?

为什么不outlook未来,在科特林的正则expression式工作?

例: // Java System.out.println(“one;two;th/;ree”.split(“(?<!/);").length); // 3 // Kotlin println("one;two;th/;ree".split("(?<!/);").size) // 1 如何纠正这个?

Kotlin和Java String之间的差异与正则expression式分割

如果我们有一个val txt: kotlin.String = “1;2;3;” 并且想把它分成一个数字数组,我们可以尝试以下方法: val numbers = string.split(“;”.toRegex()) //gives: [1, 2, 3, ] CharSequence.split的结果中包含尾随的空String 。 另一方面,如果我们看Java String ,结果是不同的: val numbers2 = (string as java.lang.String).split(“;”) //gives: [1, 2, 3] 这一次,使用java.lang.String.split ,结果不包括尾随的空String 。 这个行为实际上是给定的相应的JavaDoc: 此方法的工作原理与通过调用给定expression式和极限参数为零的双参数拆分方法一样。 结尾的空字符串因此不包括在结果数组中 。 在Kotlin的版本中, 0也是这里记录的默认limit参数,但是内部Kotlin在调用 java.util.regex.Pattern::split时将0映射为负值-1 。 nativePattern.split(input, if (limit == 0) -1 else limit).asList() 它似乎正在按预期工作,但我想知道为什么语言似乎限制了Java API,因为不再提供0的限制。

在Kotlin中的正则expression式匹配

如何在字符串中匹配secret_code_data: xeno://soundcloud/?code=secret_code_data# 我试过了 val regex = Regex(“””xeno://soundcloud/?code=(.*?)#”””) field = regex.find(url)?.value ?: “” 没有运气。 我猜测 ? 在代码可能是问题之前,我应该以某种方式逃避它。 你能帮我吗?