Allow to use Regex matches CharSequence and CharSequence matches Regex in infix form

#KT-14279
This commit is contained in:
Ilya Gorbunov
2017-01-17 19:01:02 +03:00
parent 387564d140
commit 288e0b3c7e
5 changed files with 6 additions and 6 deletions
+1 -1
View File
@@ -52,7 +52,7 @@ public class Regex(pattern: String, options: Set<RegexOption>) {
private val nativePattern: RegExp = RegExp(pattern, options.map { it.value }.joinToString(separator = "") + "g")
/** Indicates whether the regular expression matches the entire [input]. */
public fun matches(input: CharSequence): Boolean {
public infix fun matches(input: CharSequence): Boolean {
nativePattern.reset()
val match = nativePattern.exec(input.toString())
return match != null && match.index == 0 && nativePattern.lastIndex == input.length
+1 -1
View File
@@ -44,7 +44,7 @@ header class Regex {
constructor(pattern: String, options: Set<RegexOption>)
fun matchEntire(input: CharSequence): MatchResult?
fun matches(input: CharSequence): Boolean
infix fun matches(input: CharSequence): Boolean
fun containsMatchIn(input: CharSequence): Boolean
fun replace(input: CharSequence, replacement: String): String
fun replace(input: CharSequence, transform: (MatchResult) -> CharSequence): String
+1 -1
View File
@@ -677,7 +677,7 @@ public inline fun CharSequence.replaceFirst(regex: Regex, replacement: String):
* Returns `true` if this char sequence matches the given regular expression.
*/
@kotlin.internal.InlineOnly
public inline fun CharSequence.matches(regex: Regex): Boolean = regex.matches(this)
public inline infix fun CharSequence.matches(regex: Regex): Boolean = regex.matches(this)
/**
* Implementation of [regionMatches] for CharSequences.
@@ -116,7 +116,7 @@ internal constructor(private val nativePattern: Pattern) {
public val options: Set<RegexOption> = fromInt(nativePattern.flags())
/** Indicates whether the regular expression matches the entire [input]. */
public fun matches(input: CharSequence): Boolean = nativePattern.matcher(input).matches()
public infix fun matches(input: CharSequence): Boolean = nativePattern.matcher(input).matches()
/** Indicates whether the regular expression can find at least one match in the specified [input]. */
public fun containsMatchIn(input: CharSequence): Boolean = nativePattern.matcher(input).find()
+2 -2
View File
@@ -11,8 +11,8 @@ class RegexTest {
val p = "\\d+".toRegex()
val input = "123 456 789"
assertFalse(input.matches(p))
assertFalse(p.matches(input))
assertFalse(input matches p)
assertFalse(p matches input)
assertTrue(p in input)