Я знаю, что этот вопрос составляет 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()
.
Кажется, вы хотите сопоставить 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 .