Нераспознанный побег с обратной косой чертой в регулярном выражении kotlin

Я знаю, что этот вопрос составляет 5+ лет, и данные ответы хороши, но я хотел что-то более мощное для выражения, поэтому я создал пакет express-map2 для npm. Я собирался называть его просто express-map, однако люди в yahoo уже имеют пакет с этим именем, поэтому мне пришлось переименовать мой пакет.

1. основное использование:

app.js (or whatever you call it)

var app = require('express'); // 1. include express

app.set('controllers',__dirname+'/controllers/');// 2. set path to your controllers.

require('express-map2')(app); // 3. patch map() into express

app.map({
    'GET /':'test',
    'GET /foo':'middleware.foo,test',
    'GET /bar':'middleware.bar,test'// seperate your handlers with a comma. 
});

использование контроллера:

//single function
module.exports = function(req,res){

};

//export an object with multiple functions.
module.exports = {

    foo: function(req,res){

    },

    bar: function(req,res){

    }

};

2. расширенное использование с префиксами:

app.map('/api/v1/books',{
    'GET /': 'books.list', // GET /api/v1/books
    'GET /:id': 'books.loadOne', // GET /api/v1/books/5
    'DELETE /:id': 'books.delete', // DELETE /api/v1/books/5
    'PUT /:id': 'books.update', // PUT /api/v1/books/5
    'POST /': 'books.create' // POST /api/v1/books
});

Как вы можете видеть, это экономит массу времени и делает простую маршрутизацию вашего приложения простой, чтобы писать, поддерживать и понимать. он поддерживает все http-глаголы, которые выражают поддержку, а также специальный метод .all().

1
задан Milind Mevada 18 January 2019 в 12:14
поделиться

1 ответ

Кажется, вы хотите сопоставить mCi=268435455, одно совпадение во входной строке.

Основная проблема заключается в том, что вы используете литеральную запись regex внутри строкового литерала. Разделители и флаги регулярных выражений анализируются как часть шаблона регулярных выражений, и, следовательно, у вас нет совпадений. В первом фрагменте вы даже не используете 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 demo .

Если вы планируете получить только цифру части mCi, вы можете использовать

val regex = """(?<=mCi=)[0-9]*""".toRegex()

(?<=mCi=) положительный взгляд сзади потребует наличия mCi= непосредственно перед 0 или более цифрами , но будет исключен из сопоставленного текста. См. это демо Kotlin .

0
ответ дан Wiktor Stribiżew 18 January 2019 в 12:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: