Tag: expression式

PHP使用preg_replace:“分隔符不能是字母数字或反斜杠”错误。

我正在尝试采取如下所示的string: $string = "This (1) is (2) my (3) example (4) text"; 在括号内有正整数的情况下,我想用整数本身replace它。 我现在使用的代码是: $result = preg_replace("\((\d+)\)", "$0", $string); 但是我不断收到“分隔符不能是字母数字或反斜杠”错误。 有什么想法吗? 我知道在这里还有其他的问题可以回答这个问题,但是我对正则expression式的了解还不足以把它转换到这个例子。

REGEX从列表中select第n个值,允许空值

我正在使用REGEXP_SUBSTR()从逗号分隔的列表中返回第n个值。 当所有值都存在时,这工作正常,但如果一个项目为空,则失败。 下面是一个在所有值都存在的情况下工作的例子,我select第二个出现的不是逗号的一个或多个字符: SQL> select REGEXP_SUBSTR('1,2,3,4,5,6', '[^,]+', 1, 2) data 2 from dual; D – 2 但是当第二个值为空时,我真的得到了列表中的第三个项目,当然这确实是第二个出现的一个或多个不是逗号的字符。 但是,我需要它作为第二个项目是空的返回NULL: SQL> select REGEXP_SUBSTR('1,,3,4,5,6', '[^,]+', 1, 2) data 2 from dual; D – 3 如果我更改正则expression式以允许零个或多个字符而不是一个或多个字符,则对于超过null的数字也会失败: SQL> select REGEXP_SUBSTR('1,,3,4,5,6', '[^,]*', 1, 4) data 2 from dual; D – 3 我需要允许null,但似乎无法得到正确的语法。 从逻辑上讲,我需要返回第n个逗号之前是否存在数据(也允许最后一个值)。 有任何想法吗?

将expression式parameter passing给另一个expression式的参数

我有一个查询过滤结果: public IEnumerable<FilteredViewModel> GetFilteredQuotes() { return _context.Context.Quotes.Select(q => new FilteredViewModel { Quote = q, QuoteProductImages = q.QuoteProducts.SelectMany(qp => qp.QuoteProductImages.Where(qpi => q.User.Id == qpi.ItemOrder)) }); } 在where子句中,我使用参数q来匹配属性和参数qpi中的属性。 因为filter将在几个地方使用,我试图重写where子句的expression式树,看起来像这样: public IEnumerable<FilteredViewModel> GetFilteredQuotes() { return _context.Context.Quotes.Select(q => new FilteredViewModel { Quote = q, QuoteProductImages = q.QuoteProducts.SelectMany(qp => qp.QuoteProductImages.AsQueryable().Where(ExpressionHelper.FilterQuoteProductImagesByQuote(q))) }); } 在这个查询中,参数q被用作函数的一个参数: public static Expression<Func<QuoteProductImage, bool>> FilterQuoteProductImagesByQuote(Quote quote) { […]

为什么map()和list的理解结果不一样?

以下testing失败: #!/usr/bin/env python def f(*args): """ >>> t = 1, -1 >>> f(*map(lambda i: lambda: i, t)) [1, -1] >>> f(*(lambda: i for i in t)) # -> [-1, -1] [1, -1] >>> f(*[lambda: i for i in t]) # -> [-1, -1] [1, -1] """ alist = [a() for a in args] print(alist) if […]

在可变长度lookbehind中平衡组

TL; DR:在.NET的lookbehinds内使用捕获(尤其是平衡组)会改变获得的捕获,尽pipe它不应该有所作为。 什么是.NET的向后看,打破了预期的行为? 我试图想出这个问题的答案,作为与.NET平衡组织玩弄的借口。 但是,我不能让他们在一个可变长度lookbehind内工作。 首先,请注意,我不打算高效地使用这个特定的解决scheme。 这更多的是因为学术的原因,因为我觉得有一些事情发生在我不知道的可变长度lookbehind上。 而且我知道,将来我可以派上用场的时候,实际上我需要使用类似的东西来解决问题。 考虑这个input: ~(ab (c) d (ef (g) h) i) j (k (l (m) n) p) q 我们的目标是匹配所有的字母,这些字母在~之前的圆括号内,不pipe多深(从a到i )。 我试图在向后看的地方检查正确的位置,这样我就可以在一个调用Matches得到所有的字母。 这是我的模式: (?<=~[(](?:[^()]*|(?<Depth>[(])|(?<-Depth>[)]))*)[az] 在后面我试图find一个~(然后我使用命名的组堆栈Depth来计算无关的开括号。只要在~( )中打开的括号永远不会closures,则后向应该匹配。 (?<-Depth>…)不能从堆栈中popup任何东西,并且向后看会失败(也就是说,对于来自j所有字母)。不幸的是,这不起作用,而是匹配a , b , c , e , f , g和m ,所以只有这些: ~(ab (c) _ (ef (g) _) _) _ (_ (_ (m) _) _) […]

如何检查string是否是有效的XML元素名称?

我需要在PHP中的正则expression式或函数,将validationstring是一个很好的XML元素名称。 表格w3schools: XML元素必须遵循这些命名规则: 名称可以包含字母,数字和其他字符 名称不能以数字或标点符号开头 名称不能以字母xml(或XML或Xml等)开头, 名称不能包含空格 我可以写一个基本的正则expression式来检查规则1,2和4,但它不会考虑所有标点符号,也不会考虑第三条规则 \w[\w0-9-] 友好的更新 以下是格式正确的XML元素名称的更权威来源: 名称和标记 NameStartChar ::= ":" | [AZ] | "_" | [az] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] NameChar ::= NameStartChar | "-" | "." | [0-9] | […]

使用或不使用正则expression式?

我刚刚问了一个关于使用正则expression式来允许-90.0到+90.0之间的数字的问题。 关于如何实现正则expression式,我得到了一些答案,但大多数答案也提到,如果不使用正则expression式会更好地处理,或者使用正则expression式将会是过度的。 那么如何决定何时使用正则expression式,何时不使用正则expression式。 有没有可以遵循的检查清单?

Java正则expression式和美元符号

我有Javastring: String b = "/feedback/com.school.edu.domain.feedback.Review$0/feedbackId"); 我也产生了模式,我想匹配这个string: String pattern = "/feedback/com.school.edu.domain.feedback.Review$0(.)*"; 当我说b.matches(pattern)它返回false 。 现在我知道美元符号是Java RegEx的一部分,但我不知道我的模式应该如何。 我假设$模式需要被一些转义字符replace,但是不知道有多less。 这个$符号对我来说很重要,因为它帮助我区分列表中的元素(美元之后的数字),而且我不能没有它。

如何使用htaccess从url中删除文件夹名称

我想从以下url更改url: http://domain.com/Portfolios/iPhone/app 至: http://domain.com/iPhone/app 对于所有url也是一样的: domain.com/Portfolios/iPad/app 至: domain.com/iPad/app 从: domain.com/Portfolios/xyz/app 至: domain.com/xyz/app 我已经尝试了很多,但没有任何工作为我,所以请帮助我。 当我需要帮助的时候,为什么有些朋友会投票呢,如果你知道答案,那就回答。 更新 <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^Portfolios(/.*|)$ $1 [L,NC] </IfModule>

正则expression式从网页parsing链接?

我正在寻找一个.NET正则expression式从网页中提取所有的url,但还没有find一个足够全面的覆盖所有不同的方式,你可以指定一个链接。 还有一个方面的问题: 是否有一个正则expression式来统治他们? 或者,我最好使用一系列不太复杂的正则expression式,只使用原始HTML的多重传递? (速度与可维护性)