Articles of regex

节点JS PCRE正则expression式和转换支持

我需要应用大量的带有多个反向引用的PCRE正则expression式,并在Node JS应用程序中应用perl样式转换s/\/\/(\d+)/$1/s 。 我search了一下,find了这两个库: https://github.com/mscdex/node-pcre (正则expression式应用程序) https://github.com/tokuhirom/node-perl(Perl风格转换) 在Node v5.9.0中安装这些模块期间,我收到了很多NPM错误。 node-pcre库存在一个问题 ,即由于V8 API的更改,库在NodeJS 0.10版本之后停止工作 我也遇到了node-perl库的安装问题。 有没有一种方法可以获得对Node v5.9.0中PCRE正则expression式和转换的支持 谢谢 编辑:下面的意见之一是指定一个PCRE正则expression式,正在尝试哪些不能在JavaScript中工作。 这是一个例子: var fs = require("fs"); var regex = '<input type=\"hidden\"\s*name=\"itemId\"\s*value=\"(?P<sku>[\w\-]+)\"[^<]*>.*?<SCRIPT LANGUAGE=\'JavaScript\'[^<]*>.*?(\g{sku}Matrix\s*\=.*?<\/SCRIPT>)'; var page = fs.readFileSync("./page.html"); var re = new RegExp(regex); var matchStr = ""; matchStr = page.replace(re, function (match, $1) { return $1; }); console.log(matchStr); 响应 SyntaxError: […]

在RegEX中的2个时间戳模式之间提取日志消息

我有下面的日志文件,正在使用NodeJS写日志监视。 我的parsing器是基于正则expression式,所以如果我收到的日志文件中可以被翻译成多个日志消息的新行,我应该能够提取它们。 为此,我需要一个rtegex来提取可变日志消息 Fri Jan 24 05:28:57 2014 MEMORY_TARGET defaulting to 1128267776. * instance_number obtained from CSS = 1, checking for the existence of node 0… * node 0 does not exist. instance_number = 1 Starting ORACLE instance (normal) LICENSE_MAX_SESSION = 0 LICENSE_SESSIONS_WARNING = 0 Initial number of CPU is 48 Number of processor cores […]

为什么下面的JavaScript正则expression式不能工作?

s='<img src="http://25.media.tumblr.com/xxxxx/tumblr_xxx_1280.jpg">' p=/(?=<img src=")http:\/\/\d*\.media\.tumblr\.com\/\w*\/?tumblr_\w*_\d{3,4}\.\w{3,3}(?=")/g s.match(p) # return null 但是,以下工作: p=/(<img src=")http:\/\/\d*\.media\.tumblr\.com\/\w*\/?tumblr_\w*_\d{3,4}\.\w{3,3}(?=")/g

Node.js:如何在ECT模板中打印URL的一部分

下面是app.js. ECT文件是基于path加载的。 var http = require('http'); var ECT = require('ect'); var renderer = ECT({ root : __dirname + '/views' }); var data = { title : 'Hello, world!', size : 'XXL' }; var product = renderer.render('product.ect', data); var about = renderer.render('about.ect', data); var anypath = renderer.render('anypath.ect', data); var server = http.createServer(function(req, res) { var params; […]

node / io中复杂的正则expression式提取

有我尝试使用的图书馆的Twitter文本。 它有很多在运行时计算的复杂正则expression式。 我不需要所有的库,所以我决定只使用它的一些正则expression式。 所以我有一个脚本来提取它并保存到另一个js文件: var _ = require('lodash'); var fs = require('fs'); var twitterText = require('twitter-text'); // 1.11.0 (latest) var content = [ '/**', ' * @preserve https://github.com/twitter/twitter-text-js', ' */', 'var regexps = { };' ]; _.forEach({ url: 'extractUrl', // <- this regexp is the problem hash: 'validHashtag', mention: 'validMentionOrList' }, function(twitterTextRegexpName, regexpName) { var […]

如何根据在Node.JS中是$ regex还是$ text来对Mongoose结果进行sorting?

我有一个REST API调用像/item/search ,它附带了一些查询参数。 用户可以searchentire term或者一个术语的3 or more characters 。 Node.JS输出函数如下, exports.getSearchedItems = function(req,res){ var searchText = req.query.q; var searchedString = searchText.replace(/ /g,"|"); var nameRegex = new RegExp('\\b' + searchedString + '.*', 'i'); Item.find() .or([ {$text: {$search: searchText } }, {'name': {$regex: nameRegex } }, {'score':{'$meta': 'textScore'} ] ) .sort({'score':{'$meta': 'textScore'}} .exec(function(err, items){ if(err) console.log('Error Finding […]

string模式到正则expression式

我正在使用mongodb来存储数据。 我想存储完整的正则expression式作为string: { permissions: [{ resName: '/user[1-5]/ig', isRegex: true }] } 我知道有模块mongoose-regexp可以存储RegExp,但我想存储正则expression式和string在同一个字段。 我已经实现了使用eval(user.permissions[i].resName).test(resName) 。 我想知道这是否是正确的方法,如果有任何替代(即使用new RegExp(…) ) 编辑 我试图避免eval因为这个字段是来自用户input,如果有什么东西发送到数据库可能是一个问题。

Javascript的正则expression式意外的输出

我正在尝试使用节点在css文件上执行一些正则expression式 。 这是我的javascript: var fs = require ('fs'); fs.readFile('test.css','utf8',function(error,css){ if(error){ console.log("I'm sorry, something went terribly wrong 😮 Here's the message: "+error); } var matches = css.match(/([a-zA-Z-]+):\s*([0-9]+)(vh|VH|vw|VW)/g); console.log(matches[2][1]); }); 运行时的预期输出: 实际产出: 正如你所看到的,它不会像预期的那样把每一个匹配放在自己的数组中,它只是把所有的东西放在一个没有任何子数组的巨型数组中。 我能做什么?

在巨大的文件中合并CSV行

我有一个像这样的CSV 783582893T,2014-01-01 00:00,0,124,29.1,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y 783582893T,2014-01-01 00:15,1,124,29.1,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y 783582893T,2014-01-01 00:30,2,124,29.1,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y 783582855T,2014-01-01 00:00,0,128,35.1,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y 783582855T,2014-01-01 00:15,1,128,35.1,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y 783582855T,2014-01-01 00:30,2,128,35.1,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y … 783582893T,2014-01-02 00:00,0,124,29.1,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y 783582893T,2014-01-02 00:15,1,124,29.1,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y 783582893T,2014-01-02 00:30,2,124,29.1,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y 尽pipe有50亿条logging。 如果您注意到第一列和第二列(当天)的一部分,则三个logging全部“分组”在一起,并且仅仅是当天的前30分钟的15分钟间隔。 我想要输出看起来像 783582893T,2014-01-01 00:00,0,124,29.1,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y 783582855T,2014-01-01 00:00,0,128,35.1,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y … 783582893T,2014-01-02 00:00,0,124,29.1,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y 其中重复行的前4列被省略,其余的列与第一个logging相结合。 基本上我每天换线的时间是15分钟,到每一天是1天。 由于我将处理50亿条logging,所以我认为最好的方法是使用正则expression式(和EmEditor)或一些为此(multithreading,优化)而devise的工具,而不是自定义的编程解决scheme。 尽pipe我对nodeJS或C#中的想法是比较简单和超快的。 如何才能做到这一点?

从MongoDB中删除与“本文”匹配的条目

好的,我已经search,search,我还没有find一个方法来使这项工作。 这是我有: 我正在在node / express / socketio等聊天应用程序工作。我试图创build一个“清除”function,从指定的input删除从MongoDB的某个聊天消息。 例如: /clear badword /clear heck /clear Barbara Streisand 我正在努力创build一个合适的RegEx,它实际上会查找包含指定文本的条目。 这是我目前使用的: Chat.remove({"msg":{$regex: new RegExp('.*' + myInput, 'i')}}); 它似乎没有find任何东西。 注意:指定的文本可以在聊天消息的任何地方,所以我需要能够说: 如果<this text>存在于密钥的任何位置,请将其删除。 我一直在查看RegEx文件几个小时,我不能使任何工作。 任何人都可以指向正确的方向吗?