Кажется, вы хотите сопоставить mCi=268435455
, единственное совпадение во входной строке.
Основная проблема заключается в том, что вы используете регулярное выражение в строковом литерале. Разделители и флаги регулярных выражений анализируются как часть шаблона регулярных выражений, и, следовательно, у вас нет совпадений. В первом фрагменте вы даже не используете myRegex
.
Используйте
val regex = """mCi=[0-9]*""".toRegex()
val s = "CellInfoLte:{mRegistered=NO mTimeStampType=unknown mTimeStamp=0ns CellIdentityLte:{ mMcc=219 mMnc=1 mCi=268435455 mPci=453 mTac=65535 mEarfcn=1501} CellSignalStrengthLte: ss=37 rsrp=-104 rsrq=-15 rssnr=2147483647 cqi=2147483647 ta=2147483647}"
var res = regex.find(s)?.value
println(res) // => mCi=268435455
См. Демоверсию Kotlin .
Если вы планируете получить только цифру в части mCi
, вы можете использовать
val regex = """(?<=mCi=)[0-9]*""".toRegex()
Для положительного взгляда (?<=mCi=)
потребуется присутствие mCi=
непосредственно перед 0 или более цифрами, но оно будет исключено из сопоставленного текста. См. это демо Kotlin .