Tag: regex

将string转换为shell参数

我感兴趣的是如何parsingbashinput到参数。 例如,通过使用process.argv我们在NodeJS中获得了一个string数组(但是这是语言不可知的)。 我的问题是如何parsing像"node foo.js –foo "bar baz" -b foo"input到类似于process.argv (或其他语言的等价物)返回(例如["node", "foo.js", "–foo", "\"bar baz\"", "-b", "foo"] ? 由空间分割是不够的(由于报价)。 是否有可能用一些更复杂的正则expression式来处理引号并得到这样一个数组?

Javascript:将stringpath转换为格式化数组

所以我试图使用github API并将其转换为dynatree使用。 我正在寻找使用JavaScript。 但是,如果在Ruby,ClojureScript等中更容易完成,那也可以。 所以Github api返回的东西看起来像: { "sha": "a1f28431d5ee1a00361ff7e1e2dc91172d5bbabd", "url": "https://api.github.com/repos/Jonovono/c/git/trees/a1f28431d5ee1a00361ff7e1e2dc91172d5bbabd", "tree": [ { "mode": "100644", "type": "blob", "sha": "b81f704ee24f08f5f3e00675a9912da79274c3bc", "path": ".gitignore", "size": 114, "url": "https://api.github.com/repos/Jonovono/c/git/blobs/b81f704ee24f08f5f3e00675a9912da79274c3bc" }, { "mode": "100644", "type": "blob", "sha": "c6231c2f161f50bededaaac624a7a96db6179e9a", "path": "Makefile.am", "size": 40, "url": "https://api.github.com/repos/Jonovono/c/git/blobs/c6231c2f161f50bededaaac624a7a96db6179e9a" }, { "mode": "100644", "type": "blob", "sha": "ca41e5b8fb710b4ae7a2cdb35cdbafb143382dc2", "path": "README.md", "size": 2194, "url": "https://api.github.com/repos/Jonovono/c/git/blobs/ca41e5b8fb710b4ae7a2cdb35cdbafb143382dc2" }, […]

Node.jsparsing路由的最小函数

我有一个Node.js / Express应用程序工作,接收路线如下所示: app.get('/resource/:res', someFunction); app.get('/foo/bar/:id', someOtherFunction); 这是伟大的,工作正常。 我也使用Socket.IO,并希望有一些服务器调用使用websockets而不是传统的RESTful调用。 但是,我想使它非常干净,几乎使用相同的语法,最好: app.sio.get('/resource/:res', someFunction); 这将给Socket.IO提供一个综合的“REST”接口,从程序员的angular度来看,他没有做任何不同的事情。 只需标记websockets: true从客户端是websockets: true的。 我可以处理所有的细节,如自定义的方式来传递请求动词和parsing它们等,我没有这个问题。 我正在寻找的唯一的东西是一些function,可以parsing路线,如快递,并正确地路由它们。 例如, // I don't know how to read the ':bar', 'foo/:bar' // Or handle all complex routings, such as 'foo/:bar/and/:so/on' 我可以深入挖掘并尝试自己编写代码,或者尝试读取所有明确的“源代码”,并find它们的位置,但我相信它本身存在。 只是不知道在哪里find它。 UPDATE robertklep提供了一个很好的答案,完全解决了这个问题。 我把它改编成一个完整的解决scheme,我在下面的答案中发布了。

JavaScript与正则expression式在一个页面上的所有链接

我试图提取具有以下标记的网页上的所有链接: <a href="/item/0/100">0</a> <a href="/item/1/100">2</a> <a href="/item/2/100">3</a> <a href="/item/3/100">4</a> <a href="/item/4/100">5</a> 基本上返回所有/item…path。 我有包含这个的dom对象。 任何想法如何做到这一点? 谢谢! 编辑:与地图返回使用jQuery(截断) http:undefined { '0': '/item/200/13/0', '1': '/item/200/1/0', '2': '/item/200/4/0', '3': '/item/200/5/0', '4': '/item/200/11/0', length: 4, prevObject: { '0': { _ownerDocument: [Object], _childNodes: [Object], _attributes: [Object], _nodeName: 'a', _childrenList: null, _version: 3, _nodeValue: null, _parentNode: [Object], _readonly: false, _tagName: 'a', _created: […]

在Node / V8中如何实现正则expression式匹配?

我遇到过一篇文章 ,显示正则expression式匹配通常使用潜在的低性能algorithm与build议的Thompson NFAalgorithm实现。 考虑到这一点,如何在Node或V8中实现? 是否有可能使用Thompson NFA的JS实现来提高性能,也许如果只使用了有限的特性子集(可能会去除超前或其他“高级”特性)?

ER_TRUNCATED_WRONG_VALUE_FOR_FIELD将一些string保存到mysql

我正在使用node.js, node-mysql npm模块,在mysql( sql_mode=STRICT_ALL_TABLES )中有一个utf8列,并且可以正常存储“常规”的utf8字符,但是对于某些input,它会抛出: AssertionError: Error: ER_TRUNCATED_WRONG_VALUE_FOR_FIELD: Incorrect string value: '\xF3\xA5\xB5\xA5\xEF\xBF…' 我想这是由于一些字符在utf8之外。 我知道可以在mysql中使用utf8mb charset,但在这种情况下,我不关心这些字符,只想从string中删除它们,而不是更改mysqlconfiguration。 是否有可能使用node.js删除这些字符?

parsing不一致的数据

数据应该是这样的: Some junk data More junk data 1. fairly long key, all on one line value: some other text with spaces and stuff 2. hey look! another long key. still on one line value: a different value with some different information 这些文件有几个,通常在二十到三十之间。 键值对的总数超过20,000,这意味着手动更正每个文件是不可选的。 每个键的前缀数应该是正确的。 应该有一个值和下一个键之间的换行符。 每个值都应以string“value:”开头 现在,我一行一行地将每一行分类为键,值或垃圾。 然后我把这个数字parsing出来,并把数字,键和值存储在一个对象中。 数据格式不正确时出现问题。 以下是我迄今遇到的一些问题: 关键和价值之间没有换行。 在键或值的中间出现意外的换行符,这导致程序将每个键或值的一部分视为垃圾数据。 “价值”一词拼写错误。 我通过计算每行的前六个字符与主string“value:”之间的Levenstein距离来处理第三种情况。 我怎样才能解决其他两个问题? […]

Minecraft控制台和nodejs的正则expression式

我正在为Minecraft服务器做一个包装,而且我一直被困在这一个正则时代的匹配问题上。 基本上我想匹配以下部分 [04:57:40] [Server thread/INFO]: <§c§lAdmin §7§oUser1§r> msg [04:57:50] [Server thread/INFO]: <§c§lAdmin §7§oUser2§r> msg [04:58:16] [Server thread/INFO]: <§c§lAdmin §7§oUser1§r> msg [04:58:28] [Server thread/INFO]: <§4§lCoOwner §7§oUser2§r> msg [04:58:33] [Server thread/INFO]: <§c§lAdmin §7§oUser1§r> msg ^——————-^<–That 现在,对于那些不熟悉Minecraft用户名的人来说,有三个部分: 前缀:由0-16个字符组成,包括“§”。 '§'后面必须跟一个字母或数字。 用户名:字母,数字和下划线,长度在3到16个字符之间。 [\w\d]{3,16}轻松满足这一点。 后缀:与前缀相同 因此,除了上述之外,我需要把这三个部分分开。 有没有办法在JS RegExp中做到这一点? 我能想到的唯一方法是使用lookbehinds。 做一个JS函数来parsing这个会更好吗? 如果是这样,我该怎么去做呢? 编辑1:这是我目前的正则expression式(?:[§&\d\w ]){0,16}?(\w{3,16})(?:[§&\d\w ]){0,16} ,给出以下的input行: <§4&btest &r&rKaidenP§r> woo 模式组#1是rKaidenP 。 它只需要是KaidenP

如何在Node.js中使用我的PHP正则expression式?

我在PHP中有一个正则expression式,但是当我把它移植到Node.js时,我得到的输出和我从PHP获得的输出是不一样的,但我认为这是因为我不知道如何使PREG_SET_ORDER在Node.js中工作 示例文本: INPUT – Each line represents a line inside a text file. ————————————————————————————- "!?Text" (1234) 1234-4321 "#1 Text" (1234) 1234-???? #2 Text (1234) {Some text (#1.1)} 1234 Text (1234) 1234 Some Other Text: More Text here 1234-4321 (1234) (V) 1234 PHP: preg_match_all("/^((.*?) *\((\d+)\))(?: *\{((.*?) *\((.+?)\)) *\})?/m",$data,$r, PREG_SET_ORDER); $i = 0; foreach($r as $a) { […]

如何使用path-to-regexp匹配所有不以/ api /开头的path

当使用path-to-regexp时 ,如何匹配所有不以/api/开头的path? 通过使用原生JavaScript RegExp /^(?!\/api\/).*/将匹配/x/y/z 。 从这里看testing结果 但是,它不适用于path正则expression式。 从那里看到testing结果 那么在path-to-regexp中实现我的目标的正确方法是什么? [更新1] 更多细节:真实的情况是我正在使用angular2 + koajs。 而在angular2中,浏览器可能会向服务器发出一个客户端路由URL。 请看看我的另一个问题 。 为了解决这个问题,正如@mxii所build议的那样,我试图用koa-repath将不以/api/ 开头的所有请求redirect到根URL: http://localhost:3000/ excepte它是静态资源(js / json / html / png / …)请求。 而koa-repath使用path-to-regexp来匹配path。 这就是为什么我问这个问题。