我正在阅读这个问题: 未定义的行为和顺序点 特别是C ++ 11的答案 ,并且我理解评估“sorting”的想法。 但是 – 当我写的时候是否有足够的顺序: f(x++), g(x++); ? 也就是说,我保证f()得到x的原始值, g()得到一个一次增加的x ? nitpickers注意事项: 假设operator++()已经定义了行为(即使我们已经覆盖它), f()和g() ,没有任何exception会被抛出,等等 – 这个问题不是这个问题。 假设operator,()没有被重载。
我有一个接受Expression<Func<T, bool>>作为参数的方法。 我想用它作为List.Find()方法中的谓词,但我似乎无法将其转换为列表需要的谓词。 你知道一个简单的方法来做到这一点? public IList<T> Find<T>(Expression<Func<T, bool>> expression) where T : class, new() { var list = GetList<T>(); var predicate = [what goes here to convert expression?]; return list.Find(predicate); } 更新 结合tvanfosson和280Z28的答案,我现在使用这个: public IList<T> Find<T>(Expression<Func<T, bool>> expression) where T : class, new() { var list = GetList<T>(); return list.Where(expression.Compile()).ToList(); }
我GOOGLE了这个,发现如何处理与其他正则expression式parsing器: http://vim.wikia.com/wiki/Changing_case_with_regular_expressions http://www.regular-expressions.info/replacecase.html 我试过这些,都没有工作。 作为一个例子,我想用一个正则expression式来改变这个: private String Name; private Integer Bar = 2; 对此: private String name; private Integer bar = 2; 我尝试了这样的事情: replace: private (\S+) (\S+) with: private $1 $L$2 with: private $1 \L$2 with: <etc.> 他们都没有工作。 是否可以在intellij中做到这一点,或者这是一个缺失的function? 这只是为了教育目的,这个例子是人为的。 我只是想知道这是否可以在intellij做。
在我的主目录中,我有一个包含Drupal平台的文件夹drupal-6.14。 从这个目录中我使用下面的命令: find drupal-6.14 -type f -iname '*' | grep -P 'drupal-6.14/(?!sites(?!/all|/default)).*' | xargs tar -czf drupal-6.14.tar.gz 这个命令的作用是gzips文件夹Drupal-6.14 ,不包括drupal-6.14 / sites / sites / all和sites / default所包含的所有子文件夹。 我的问题是正则expression式: grep -P 'drupal-6.14/(?!sites(?!/all|/default)).*' 该expression式的作品排除所有我想排除的文件夹,但我不明白为什么。 这是使用正则expression式的常见任务 匹配所有string,除了不包含子模式x的string。 换句话说,否定子模式。 我认为,我明白,解决这些问题的总体策略是使用负向预测,但是我从来没有理解到一个令人满意的程度如何正面和负面看(前/后)的工作。 多年来,我已经阅读了许多网站。 PHP和Python的正则expression式手册,其他页面如http://www.regular-expressions.info/lookaround.html等等,但我从来没有真正理解它们。 有人可以解释,这是如何工作,也许提供一些类似的例子,会做类似的事情? – 更新一: 关于Andomar的回应:双重否定的前瞻可以更简洁地expression为一个积极的前瞻性陈述: 即是: 'drupal-6.14/(?!sites(?!/all|/default)).*' 相当于: 'drupal-6.14/(?=sites(?:/all|/default)).*' ??? – 更新二: 根据@andomar和@alan摩尔 – 你不能交换双向负向lookahead积极lookahead。
我开始觉得使用正则expression式会降低代码的可维护性。 正则expression式的简洁和力量是邪恶的。 Perl会像默认操作符那样带有副作用。 我有养成正则expression式的习惯,至less有一个句子给出了基本意图,至less有一个例子说明什么可以匹配。 由于build立了正则expression式,所以我觉得评论expression式中每个元素的最大组成部分是绝对必要的。 尽pipe如此,即使我自己的正则expression式,让我仿佛在读克林贡一样,挠挠脑袋。 你有意贬低你的正则expression式吗? 你是否可以将更短更强大的分解成更简单的步骤? 我放弃了嵌套正则expression式。 是否存在由于可维护性问题而避免的正则expression式构造? 不要让这个例子云问题。 如果迈克尔·阿什 ( Michael Ash)的以下内容存在某种缺陷,你会有什么前景可以完全抛弃它吗? ^(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[13-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$ 根据要求,可以使用Ash先生的链接find确切的目的。 匹配 01.1.02 | 11-30-2001 | 2000年2月29日 非匹配 02/29/01 | 13/01/2002 | 11/00/02
我需要一个正则expression式模式来接受正整数。 它也可以接受一个零。 我不想接受小数,负数和前导零的数字。 有什么build议么?
我想创build一个SQLselect在MS SQL Server 2005中进行unit testing。基本思想是这样的: select'Test Name',foo ='Result'from bar where baz =(某些标准) 这个想法是,如果“富”列的值是“结果”,那么我会得到一个值为true / 1; 如果不是,我会得到假/ 0。 不幸的是,T-SQL不喜欢expression式; 它在等号上窒息。 是否有某种方法来评估SQLselect列表中的expression式并获得可返回的结果? (或者其他一些实现我想要的unit testing的方法?) 编辑:3伟大的答案,都围绕CASEbuild成。 我会接受这个信号,因为他得到最less的代表,因此最需要它。 :-) 谢谢大家。
几乎所有使用的编程语言都是图灵完成的 ,虽然这提供了表示任何可计算algorithm的语言,但它也带有一套自己的问题 。 看到我写的所有algorithm都是想停下来的,我希望能用一种能保证停止的语言来表示它们。 用于匹配string和有限状态机的 正则expression式在使用时会被使用,但是我想知道是否有一个更一般,广泛的语言不是图灵完整的? 编辑:我应该澄清,通过'通用'我不一定要能够写所有停止algorithm的语言(我不认为这样的语言会存在),但我怀疑有共同的线程在停止certificate,可以推广到产生一种语言,其中所有algorithm都保证停止。 还有另一种方法来解决这个问题 – 消除理论上无限的记忆的需要。 一旦限制了机器的内存容量,机器所处的状态数就是有限且可数的,因此可以确定algorithm是否会停止(不允许机器进入之前的状态)。
我有以下正则expression式匹配一个电子邮件地址格式: ^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$ 这用于使用JavaScript对表单进行validation。 但是,这是一个可选字段。 因此,我怎样才能改变这个正则expression式匹配一个电子邮件地址格式,或一个空string? 从我有限的正则expression式知识,我认为\b匹配一个空string,和| 意思是“或”,所以我试图做到以下,但它没有工作: ^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$|\b
Regexes中是否有NOT运算符? 就像那个string: "(2001) (asdf) (dasd1123_asd 21.01.2011 zqge)(dzqge) name (20019)" 我想删除所有\([0-9a-zA-z _\.\-:]*\)但不是一年中的那个: (2001) 。 那么正则expression式应该返回的是(2001) name 。 注意:类似\((?![\d]){4}[0-9a-zA-z _\.\-:]*\)不适用于我( (20019)莫名其妙地匹配.. 。)