Tag: expression式

是否有可能改变emacs的正则​​expression式语法?

我爱emacs。 我喜欢正则expression式。 我讨厌emacs的正则​​expression式语法 – 需要避免分组parens和大括号,你不逃避字面parens,缺乏预定义的字符类,等等。 我可以replaceemacs的正则​​expression式引擎,或调整一些设置,以便当我使用Query-replace-regexp(或许多其他function之一)function时,我可以使用在java / js / perl / ruby​​ / etc中编程的语法…? 编辑:该主题最初是“如何更改emacs的正则​​expression式引擎”,这不仅将改变逃逸规则和添加字符类,但也(在后文中没有提到)添加支持各种常见的扩展(?…)。 像非捕获伙伴的function:(?:…),仅当/如果没有后面跟:(?= …)/(?!…),以及其他。 我不相信(虽然很高兴能被纠正),但emacs当前的正则expression式引擎可能会有这些function,而且没有任何语法replace可以解决这个问题。 下面的解决scheme通过replaceemacs理解的语法来解决转义和其他char类的原始问题。 第二个答案(现在删除)build议build议(添加一个函数在另一个开始运行)emacs的正则​​expression式函数来替代所有的正则expression式处理。 作者很快就审查了自己意识到这可能会破坏现有的emacs代码,最终这个post被删除了。 我仍然希望将正则expression式引擎更改为支持扩展的引擎,但是我同意改变逃逸行为会造成严重的后果,我不愿意追逐。 因此,我正在改变主题来匹配问题并接受答复。 它改变了引擎以支持通用语法和扩展,build议使用regex函数将emacs-internal代码转换成通用语法,build议交互function将我的通用语法转换为emacs-syntax(所以它可以是转换回普通)…但我认为即使RMS会build议在此之前分叉。

正则expression式匹配没有给定前缀的特定string

我需要匹配所有包含一个值,没有给定前缀的行。 例如:我想要所有包含word行,而不是前缀的prefix 所以: foobar -> no match prefix word -> no match prefix word suffix -> no match word -> MATCH something word -> MATCH 我到目前为止所尝试的是: (?!prefix)word 似乎没有做我想要的

如何使用PHPvalidation电话号码?

如何使用phpvalidation电话号码

正则expression式包含一个字或另一个字

我需要创build一个匹配整数的expression式,后跟“秒”或“”分钟“ 我试过这个expression式: ([0-9]+)\s+(\bseconds\b)|(\bminutes\b) 它可以在几秒钟内正常工作,但不会分钟。 例如“5秒”给出5秒; 而“5分钟”给出;分钟

匹配换行符 – \ n还是\ r \ n?

在写这个答案时 ,我不得不完全匹配换行符,而不是使用s flag( dotall -dot matches linebreaks)。 尝试匹配\n或\r\n时,通常用于testing正则expression式的网站的行为会有所不同。 我注意到 Regex101仅在\n上匹配换行符 ( 例如 – 删除\r和它匹配) RegExr在\n 和 \r\n上都不符合换行符 除了m flag和\s之外,我找不到一个能够匹配换行符的东西 ( 例子 ) Debuggex的行为更加不同: 在这个例子中它只匹配\r\n ,而 这里只匹配\n ,指定相同的标志和引擎 我完全知道m -flag(多行 – 使匹配开始和$结束一行),但有时这不是一个选项。 与\s相同,因为它与选项卡和空格相匹配。 我以为使用unicode换行符( \u0085 )是不成功的,所以: 有没有一种安全的方式来将匹配整合到一个换行符中(最好不pipe使用的语言如何)为正则expression式? 为什么上面提到的网站行为不同(特别是Debuggex,一次只匹配\n ,一次只匹配\r\n )?

为什么要使用Express而不是AngularJS?

据我所知,Express存放在服务器上,而Angular存在于客户端,但据我所知,Angular可以做Express所能做的一切, 路由 与数据库进行交互 这似乎可能需要快递为了一个AngularJS应用程序由Node.js服务,但我不知道。 那么,将Express添加到AngularJS应用程序有什么好处?

Lambda到expression式树的转换

我会保持简单, 如何从lambda中获得expression式树? 或从查询expression式?

如何在列表理解中使用重新匹配对象

我有一个函数来从string列表中选出一个块,并将它们作为另一个列表返回: def filterPick(lines,regex): result = [] for l in lines: match = re.search(regex,l) if match: result += [match.group(1)] return result 有没有办法将这个重新expression为一个列表理解? 显然这是相当清楚的。 只是好奇。 感谢那些贡献者,特别提到@Alex。 这里是我最终的结果。 正则expression式匹配方法作为“预悬挂”parameter passing给filterPick: import re def filterPick(list,filter): return [ ( l, m.group(1) ) for l in list for m in (filter(l),) if m] theList = ["foo", "bar", "baz", "qurx", "bother"] searchRegex […]

使用匹配器组方法时“找不到匹配”

我使用Pattern / Matcher来获取HTTP响应中的响应代码。 groupCount返回1,但是当我试图获取它的时候,我得到一个exception! 任何想法为什么? 代码如下: //get response code String firstHeader = reader.readLine(); Pattern responseCodePattern = Pattern.compile("^HTTP/1\\.1 (\\d+) OK$"); System.out.println(firstHeader); System.out.println(responseCodePattern.matcher(firstHeader).matches()); System.out.println(responseCodePattern.matcher(firstHeader).groupCount()); System.out.println(responseCodePattern.matcher(firstHeader).group(0)); System.out.println(responseCodePattern.matcher(firstHeader).group(1)); responseCode = Integer.parseInt(responseCodePattern.matcher(firstHeader).group(1)); 这里是输出: HTTP / 1.1 200 OK 真正 1 线程“Thread-0”中的exceptionjava.lang.IllegalStateException:未find匹配项 在java.util.regex.Matcher.group(Unknown Source) 在cs236369.proxy.Response。(Response.java:27) 在cs236369.proxy.ProxyServer.start(ProxyServer.java:71) 在tests.Hw3Tests $ 1.run(Hw3Tests.java:29) 在java.lang.Thread.run(Unknown Source)

为什么这种模式在egrep中不起作用?

为什么我不能匹配string "1234567-1234567890" 与给定的正则expression式 \d{7}-\d{10} 与壳egrep像这样: egrep \d{7}-\d{10} file ?